Mam następujący kod:System.Data.SQLite problem parametr
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");
}
Wykonuje doskonale, ale kiedy zobaczyć moje „Brugere” tabeli, ma wstawione wartości: „@uNameParam”, „@ bNavnParam ',' @passwdParam ',' @pc_idParam ',' @noterParam ',' @licens_idParam 'dosłownie. Zamiast ich zastępować.
Próbowałem dokonać breakpoint i sprawdzone parametry, mają one poprawne przypisane wartości. Więc to też nie jest problem.
Poświęcam temu dużo teraz, bez powodzenia, czy ktoś może pomóc?
Oh i dla odniesienia, tutaj jest metoda OpenDB z klasy 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;
}
}
Przepraszam, nie, spróbowałem też. Wystąpiłby następujący błąd: "Niewystarczające parametry dostarczone do polecenia" – CasperT
Ah, widzę twój problem. Nie wszystkie nazwy parametrów są takie same: @uNavnParam kontra @uNameParam. To prosta literówka :) –
Powinieneś nadal usuwać pojedyncze cudzysłowy wokół swoich parametrów. –