2011-01-05 5 views
0

Ich schreibe meine erste Datenbankanwendung. Es ist eine C# WinForms-Anwendung mit einer SQLite-Datenbank.How To: SQLite Parameter mit einem UPDATE/WHERE Befehl

Ich versuche eine SQLite-Abfrage zu schreiben, die Parameter mit einem UPDATE/WHERE-Befehl anstelle eines INSERT-Befehls verwendet, was normalerweise angezeigt wird.

Hier ist der Link, den ich als Vorlage verwende. Siehe Listing 14-2.

http://en.csharp-online.net/ASP.NET_Security_Hacks%E2%80%94Avoiding_SQL_Injection

Kann jemand einen Einblick darüber, wie die Abfrage in der Verbindung zu ändern, um eine UPDATE/WHERE-Anweisung anstelle der INSERT-Anweisung zu benutzen?

Antwort

-1

Nun, dieser Artikel weist nur darauf hin, dass Sie Abfragen als parametrisierte Abfragen schreiben werden, um SQL-Injection-Angriffe zu vermeiden. Die Abfragelogik ist also die gleiche wie normalerweise, aber anstatt die String-Verkettung zu verwenden, um Ihre dynamischen Werte zu verwenden, verwenden Sie Variablen nach der Syntax "@someVariableName" und fügen dann Ihre dynamischen Werte als Parameter in das sqlCommand-Objekt ein. Hier

ist ein Link zu einem Spaziergang durch, wie dies zu tun für SQLite: Parameterized Queries

EDIT: Hat eine neue Referenz für diese Antwort zu finden, wie alte Referenz gestorben.

+0

Wie ist das die richtige Antwort, wenn der Link nicht funktioniert? Nervig. –

+0

@MatthewPitts Ich habe den Link aktualisiert. Bevor Sie sich ärgern, sollten Sie sich vielleicht das Datum ansehen, an dem diese Frage beantwortet wurde (vor 3,5 Jahren) und feststellen, dass manchmal Seiten entfernt und Links unterbrochen werden. – Adrian

0

Vielleicht können Sie Datenbank mit SQLiteDataAdapter Update-Funktion aktualisieren.

cmdSQLite = new SQLiteCommand("SELECT * FROM TableName", connectionSQLite); 
    daSQLite = new SQLiteDataAdapter(); 
    daSQLite.SelectCommand = cmdSQLite; 
    dsSQLite = new DataSet();    
    daSQLite.Fill(dsSQLite, "TableName"); 
    dsSQLite.Tables["TableName"].Rows[NumberOfRowToChange]["ColumnName"] = somevalue; 
    //... 
    daSQLite.Update(dsSQLite, "TableName");