Heim >Datenbank >MySQL-Tutorial >Wie führe ich parametrisierte Abfragen in MySQL mit C# sicher aus?
Parametrierte Abfragen in MySQL mit C#
Parametrierte Abfragen sind ein wichtiger Bestandteil der Datenbankprogrammierung. Sie ermöglichen es Ihnen, die SQL-Anweisung von den Daten zu trennen, die in der Abfrage verwendet werden. Dies hilft, SQL-Injection-Angriffe zu verhindern und kann Ihren Code lesbarer und wartbarer machen.
Um eine parametrisierte Abfrage in C# zu verwenden, müssen Sie ein MySqlCommand-Objekt erstellen und ihm Parameter hinzufügen. Sie können dies mithilfe der Parameters-Eigenschaft des MySqlCommand-Objekts tun.
Der folgende Code zeigt ein Beispiel für die Verwendung einer parametrisierten Abfrage zum Auswählen von Daten aus der USERS-Tabelle:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;"; public bool read(string id) { level = -1; MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.Add(new MySqlParameter("", val1)); m.Parameters.Add(new MySqlParameter("", val2)); MySqlDataReader r = m.ExecuteReader(); if (r.HasRows) level = Convert.ToInt32(r.GetValue(0).ToString()); r.Close(); return true; }
Dies Der Code wird fehlerfrei kompiliert und ausgeführt. Es werden jedoch nicht die erwarteten Ergebnisse zurückgegeben. Das Problem besteht darin, dass die Parameternamen in der SQL-Anweisung nicht mit den Parameternamen im MySqlCommand-Objekt übereinstimmen.
Um dieses Problem zu beheben, müssen Sie die Parameternamen in der SQL-Anweisung so ändern, dass sie mit den Parameternamen in übereinstimmen das MySqlCommand-Objekt. Sie können dies tun, indem Sie das @-Zeichen gefolgt vom Parameternamen verwenden.
Der folgende Code zeigt, wie Sie das Problem beheben können:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;"; public bool read(string id) { level = -1; MySqlCommand m = new MySqlCommand(readCommand); m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2); level = Convert.ToInt32(m.ExecuteScalar()); return true; }
Dieser Code wird fehlerfrei kompiliert und ausgeführt. Es werden auch die erwarteten Ergebnisse zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie führe ich parametrisierte Abfragen in MySQL mit C# sicher aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!