Ich versuche, SQLite als mein Speicher zu verwenden. Ich habe Referenzdll mit nuget und using Anweisung hinzugefügt.SQLite einfach einfügen Abfrage
Ich habe
private void SetConnection()
{
sql_con = new SQLiteConnection
("Data Source=c:\\Dev\\MYApp.sqlite;Version=3;New=False;Compress=True;");
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
und ich schicke Abfrage txt wie diese
public void Create(Book book)
{
string txtSqlQuery = "INSERT INTO Book (Id, Title, Language, PublicationDate, Publisher, Edition, OfficialUrl, Description, EBookFormat) ";
txtSqlQuery += string.Format("VALUES (@{0},@{1},@{2},@{3},@{4},@{5},@{6},@{7},{8})",
book.Id, book.Title, book.Language, book.PublicationDate, book.Publisher, book.Edition, book.OfficialUrl, book.Description, book.EBookFormat);
try
{
ExecuteQuery(txtSqlQuery);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
Mein db korrekt erstellt und übergeben Buch-Instanz mit gültigen Daten ist in Ordnung. Aber eine Ausnahme wird immer beim Ausführen der Abfrage auf dieser Codezeile ausgelöst:
sql_cmd.ExecuteNonQuery();
Ich mache offensichtlich etwas falsch hier, aber ich kann nicht sehen.
Update: geworfen Ausnahmemeldung ist
SQL Logikfehler oder fehlende Datenbank
unerkannt token: "22cf"
wo diese 22cf
Teil weitergegeben book.Id
guid Zeichenfolge ist.
Welche Ausnahme wird ausgelöst? – Alireza
@Alireza aktualisiert questio – user2783193
Ich bemerkte, dass Sie keine formalen Parameter zu Ihrem SQL-Befehl verwenden. Dies ist nicht sehr ratsam, da Sie sich Sorgen machen müssen, Daten in einer SQL-Anweisung darzustellen (z. B. Datumsangaben, Dezimaltrennzeichen usw.). –