У меня есть следующий код:System.Data.SQLite вопрос параметра
try
{
//Create connection
SQLiteConnection conn = DBConnection.OpenDB();
//Verify user input, normally you give dbType a size, but Text is an exception
var uNavnParam = new SQLiteParameter("@uNavnParam", SqlDbType.Text) { Value = uNavn };
var bNavnParam = new SQLiteParameter("@bNavnParam", SqlDbType.Text) { Value = bNavn };
var passwdParam = new SQLiteParameter("@passwdParam", SqlDbType.Text) {Value = passwd};
var pc_idParam = new SQLiteParameter("@pc_idParam", SqlDbType.TinyInt) { Value = pc_id };
var noterParam = new SQLiteParameter("@noterParam", SqlDbType.Text) { Value = noter };
var licens_idParam = new SQLiteParameter("@licens_idParam", SqlDbType.TinyInt) { Value = licens_id };
var insertSQL = new SQLiteCommand("INSERT INTO Brugere (navn, brugernavn, password, pc_id, noter, licens_id)" +
"VALUES ('@uNameParam', '@bNavnParam', '@passwdParam', '@pc_idParam', '@noterParam', '@licens_idParam')", conn);
insertSQL.Parameters.Add(uNavnParam); //replace paramenter with verified userinput
insertSQL.Parameters.Add(bNavnParam);
insertSQL.Parameters.Add(passwdParam);
insertSQL.Parameters.Add(pc_idParam);
insertSQL.Parameters.Add(noterParam);
insertSQL.Parameters.Add(licens_idParam);
insertSQL.ExecuteNonQuery(); //Execute query
//Close connection
DBConnection.CloseDB(conn);
//Let the user know that it was changed succesfully
this.Text = "Succes! Changed!";
}
catch(SQLiteException e)
{
//Catch error
MessageBox.Show(e.ToString(), "ALARM");
}
Он выполняет отлично, но когда я рассматриваю свой «brugere» стол, он вставил значение: «@uNameParam», «@ bNavnParam ',' @passwdParam ',' @pc_idParam ',' @noterParam ',' @licens_idParam 'буквально. Вместо замены их.
Я попытался сделать точку останова и проверить параметры, они имеют правильные назначенные значения. Так что это тоже не проблема.
Я уже много раз занимаюсь этим, не повезло, может ли кто-нибудь помочь?
Ну и для справки, вот метод OpenDB из класса DBConnection:
public static SQLiteConnection OpenDB()
{
try
{
//Gets connectionstring from app.config
const string myConnectString = "data source=data;";
var conn = new SQLiteConnection(myConnectString);
conn.Open();
return conn;
}
catch (SQLiteException e)
{
MessageBox.Show(e.ToString(), "ALARM");
return null;
}
}
Простите, нет, я тоже это пробовал. Это приведет к следующей ошибке: «Недостаточно параметров, предоставленных команде» – CasperT
А, я вижу вашу проблему. Не все имена параметров одинаковы: @uNavnParam и @uNameParam. Это простая опечатка :) –
И вы все равно должны удалить одиночные кавычки вокруг своих параметров. –