Heim >Datenbank >MySQL-Tutorial >Wie führe ich parametrisierte Abfragen in MySQL mit C# sicher aus?

Wie führe ich parametrisierte Abfragen in MySQL mit C# sicher aus?

DDD
DDDOriginal
2024-12-14 02:26:11474Durchsuche

How to Securely Execute Parameterized Queries in MySQL using C#?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn