Erstens, verketten Sie niemals Strings für die Datenbankeingabe. Sie sind offen für SQL Injection-Angriffe. Weitere Informationen finden Sie unter this MSDN article
Zweitens führen Sie keine Einsätze mit einer WHERE
Klausel. Sie könnten ein UPDATE
mit WHERE
Beispiele tun:
INSERT INTO TABLE (col1, col2) VALUES (val1, val2)
UPDATE TABLE SET col1 = val1, col2 = val2 WHERE col3 = somevalue
zum Beispiel in Ihrem Fall würden Sie dies für einen Einsatz schreiben möchten (einschließlich Parameter)
sql = "INSERT INTO table1 (name, address) VALUES (@textbox1,@textbox2)";
SqlCommand query = new SqlCommand("connection string", sql);
query.Parameters.AddWithValue(@textbox1, textbox1.Text);
query.Parameters.AddWithValue(@textbox2, textbox2.Text);
Wenn Sie wissen, Verwenden Sie anstelle von AddWithValue
stattdessen die folgende Syntax für den Datenbankfeldtyp:
query.Parameters.Add(@parametername, SqlDBType.Type,size).Value = somevalue;
Dabei ist SqlDBType.Type der Datenbankfeldtyp (z. B. VarChar, Int, VarBinary usw.) und size
ist der Wert des Felds. Wenn meine DB Feld VarChar (500) war, dann wäre meine Parametereinstellung
query.Parameters.Add(@parametername, SqlDBType.VarChar, 500).Value = somevalue;
Sie die SQL-Zeichenfolge mit dem folgenden ersetzen können, wenn Sie nicht einfügen aktualisieren mögen. Beachten Sie, Datensätze mit einem Bezeichner zu aktualisieren - es wäre eine schlechte Übung, name
als Ihre WHERE
-Klausel zu verwenden.
sql = "UPDATE table1 SET name = @textbox1, address = @textbox2 WHERE xyz";
Parameter verhindern, dass Benutzer unerwartete Werte in Felder eingeben, die die Ausführung von nicht autorisiertem Code ermöglichen. Wenn Sie eine verkettete Zeichenfolge wie derzeit verwenden, kann ein Angreifer möglicherweise Ihre gesamte Datenbank gefährden.
Was genau "hat nicht funktioniert"?Welchen Fehler hast du bekommen? – Alex
Was ist Windows Form hier? – elyashiv
Mögliches Duplikat von [Wie mit where-Klausel einzufügen] (http://stackoverflow.com/questions/545593/how-to-insert-with-where-clause) –