2009-04-30 11 views
14

Ich lerne gerade SQLite und ich kann meine Parameter nicht richtig in den Befehl kompilieren. Wenn ich den folgenden Code ausführe:Hinzufügen von Parametern in SQLite mit C#

this.command.CommandText = "INSERT INTO [StringData] VALUE (?,?)"; 

this.data = new SQLiteParameter(); 
this.byteIndex = new SQLiteParameter(); 

this.command.Parameters.Add(this.data); 
this.command.Parameters.Add(this.byteIndex); 

this.data.Value = data.Data; 
this.byteIndex.Value = data.ByteIndex; 

this.command.ExecuteNonQuery(); 

Ich bekomme eine SQLite-Ausnahme. Beim Inspizieren der CommandText stelle ich fest, dass was auch immer ich gerade mache, die Parameter nicht korrekt hinzufügt: INSERT INTO [StringData] VALUE (?,?)

Irgendwelche Ideen, was mir fehlt?

Dank

+0

Können Sie die Ausnahme schreiben Sie bekommen? –

Antwort

18

Versuchen VALUES statt VALUE.

63

einen anderen Ansatz versuchen, Ihre Felder in der Abfrage zu benennen und die Parameter in der Abfrage Namensgebung:

this.command.CommandText = "INSERT INTO StringData (field1, field2) VALUES(@param1, @param2)"; 
this.command.CommandType = CommandType.Text; 
this.command.Parameters.Add(new SQLiteParameter("@param1", data.Data)); 
this.command.Parameters.Add(new SQLiteParameter("@param2", data.ByteIndex)); 
... 
+5

Nun können Sie Folgendes tun: 'this.command.Parameters.AddWithValue (" @param1 ", data.Data);' 'this.command.Parameters.AddWithValue (" @param2 ", data.ByteIndex); ' – skst

Verwandte Themen