Moin Moin,
ich versuche mein DataGridView inhalte per mysql zu updaten aber bekomme immer diesen Fehler bzw. Warnung > Fehlermeldung:
CA2100 Die in 'Logtxt.Update(int, string, string, string, string, string, string, string, string)' an 'MySqlCommand.MySqlCommand(string, MySqlConnection)' übergebene Abfragezeichenfolge könnte die folgenden 'Kundenname', 'Game', 'Bezahlung', 'Bezahlt', 'Erledigt', 'PayPalEmail', 'ACCEmail', 'ACCPW', 'id'-Variablen enthalten. Wenn eine dieser Variablen aus Benutzereingaben stammt, sollten Sie eine gespeicherte Prozedur oder eine parametrisierte SQL-Abfrage verwenden, anstatt die Abfrage mit Zeichenfolgenverkettungen zu erstellen.
Ich bekomme es einfach nicht hin die Warnung für Update zu fixen(für Add habe ich sie gefixt also Insert to xxx)
jemand hier der mir damit helfen kann?
Danke schonmal und hier noch der Update code:
private void Updatebtn_Click(object sender, EventArgs e)
{
String selected = dgv.SelectedRows[0].Cells[0].Value.ToString();
int id = Convert.ToInt32(selected);
Update(id, Kundennametxt.Text, Gamecbb.Text, Bezahlungcbb.Text,Bezahltcbb.Text, Erledigtcbb.Text, PayPalEmailtxt.Text,ACCEmailtxt.Text, ACCPWtxt.Text);
}
private void Update(int id, string Kundenname, string Game, string Bezahlung, string Bezahlt, string Erledigt, string PayPalEmail,
string ACCEmail, string ACCPW)
{
string sql = "UPDATE kunden SET Kundenname='" + Kundenname + "',Game='" + Game + "',Bezahlung='" + Bezahlung +
"',Bezahlt='" + Bezahlt + "',Erledigt='" + Erledigt + "',PayPalEmail='" + PayPalEmail +
"',ACCEmail='" + ACCEmail + "',ACCPW='" + ACCPW + "' WHERE ID=" + id + "";
cmd = new MySqlCommand(sql, con);
try
{
con.Open();
adapter = new MySqlDataAdapter(cmd)
{
UpdateCommand = con.CreateCommand()
};
adapter.UpdateCommand.CommandText = sql;
if (adapter.UpdateCommand.ExecuteNonQuery() > 0)
{
ClearTxts();
MessageBox.Show("Successfully Updated");
}
con.Close();
Retrieve();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
con.Close();
}
}
[Artikelserie] SQL: Parameter von Befehlen
String Frickeleien von SQL Befehlen sind ein massives Sicherheitsrisiko - und u.a. auch schuld an Anwendungsfehlern wie diesem.
Zudem gehört ein SQL Befehl nicht in die UI.
[Artikel] Drei-Schichten-Architektur
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Bisher hats jeder verstanden; einfach Schritt für Schritt angehen, dann klappt das.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Bei CA2100: SQL-Abfragen auf Sicherheitsrisiken überprüfen findest du auch ein Beispiel, wie man eine unsichere Abfrage korrekt mit SQL-Parametern umsetzt.