2017-05-30 6 views
1

Es gibt mehrere verwandte Fragen, aber keine von ihnen löste mein Problem. Ich habe eine C# (WPF) -Anwendung, die eine Verbindung zu einer SQLite-Datenbank herstellt. Es gibt 2 Modellklassen - Dealer und Order und 2 entsprechende Tabellen in der Datenbank.WPF SQLite Abfragen Ausnahme

Ich bin in der Lage CRUD-Operationen in Händlern Tabelle zu tun, aber wenn das gleiche in Auftrag Tabelle zu tun versuchen, erhalte ich eine Ausnahme - SQL Logikfehler oder fehlende Datenbank. Ich bin ein Teil des bezogenen Code einfügen:

Für Händler

using(SQLiteConnection conn = new SQLiteConnection(connectionString)) { 
conn.Open(); 
using(SQLiteCommand cmd = new SQLiteCommand(conn)) { 
    cmd.CommandText = "INSERT INTO Dealer(name, address, contact, note) VALUES (@Name, @Address, @Contact, @Note)"; 
    cmd.Prepare(); 
    cmd.Parameters.AddWithValue("@Name", dealer.Name); 
    cmd.Parameters.AddWithValue("@Address", dealer.Address); 
    cmd.Parameters.AddWithValue("@Contact", dealer.Contact); 
    cmd.Parameters.AddWithValue("@Note", dealer.Note); 
    try { 
    result = cmd.ExecuteNonQuery(); 
    } 

Zum Auftrag

using(SQLiteConnection conn = new SQLiteConnection(connectionString)) { 
conn.Open(); 
using(SQLiteCommand cmd = new SQLiteCommand(conn)) { 
    cmd.CommandText = "INSERT INTO Order(dealer_id, note) VALUES (@DealerId, @Note)"; 
    cmd.Prepare(); 
    cmd.Parameters.AddWithValue("@DealerId", order.DealerId); 
    cmd.Parameters.AddWithValue("@Note", order.Note); 
    try { 
    result = cmd.ExecuteNonQuery(); 
    } 

ich die Ausnahme bei cmd.ExecuteNonQuery(); Erklärung für Bestellung erhalten.

Ich habe Kreuz verifiziert Spalte Name Schreibweisen und versuchte SELECT * FROM Order, die wieder die gleiche Ausnahme zurückgegeben.

Ich versuchte auch SELECT name FROM sqlite_master WHERE type='table' AND name='Order'; aus dem Für den Befehl Code oben, um zu überprüfen, ob die Tabelle existiert und es den richtigen Tabellennamen zurückgegeben.

Bitte helfen. Danke im Voraus.

Antwort

3

ORDER ist ein reserviertes Schlüsselwort in SQLite, so dass Sie es zitieren sollen, zum Beispiel [ ... ] mit:

cmd.CommandText = "INSERT INTO [Order] (dealer_id, note) VALUES (@DealerId, @Note)"; 

Es gibt vier Möglichkeiten, zitieren Schlüsselwörter in SQLite: https://sqlite.org/lang_keywords.html

+0

Das hat funktioniert. Ich danke dir sehr.. – Abdullah