Heim > Datenbank > MySQL-Tutorial > Wie behebt man die IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen in MySQL mit C#?

Wie behebt man die IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen in MySQL mit C#?

DDD
Freigeben: 2024-12-22 16:54:12
Original
126 Leute haben es durchsucht

How to Fix IndexOutOfBoundsException When Using Parameterized Queries in MySQL with C#?

Fehlerbehebung bei parametrisierten Abfragefehlern in MySQL mit C#

Bei der Verwendung parametrisierter Abfragen in MySQL mit C# ist es wichtig, häufige Fallstricke zu vermeiden, die dazu führen können zu Fehlern. Ein solches Problem, das häufig auftritt, ist die IndexOutOfBoundsException, die beim Hinzufügen des ersten Parameters auftritt.

Problem:

Bedenken Sie den folgenden vereinfachten Codeausschnitt:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;";

public bool read(string id)
{
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.Add(new MySqlParameter("", val1));
    m.Parameters.Add(new MySqlParameter("", val2));
}
Nach dem Login kopieren

Beim Ausführen dieses Codes tritt der Fehler auf, wenn versucht wird, den ersten Parameter (index 0).

Lösung:

Um dieses Problem zu beheben, besteht die richtige Syntax zum Definieren der parametrisierten Abfrage darin, benannte Parameter anstelle von Fragezeichen (?) zu verwenden. Benannte Parameter sind robuster und beseitigen die durch nummerierte Platzhalterindizes verursachte Verwirrung:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";

public bool read(string id)
{
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.AddWithValue("@param_val_1", val1);
    m.Parameters.AddWithValue("@param_val_2", val2);
}
Nach dem Login kopieren

Darüber hinaus wird empfohlen, den Code zu vereinfachen, indem die ExecuteScalar-Methode verwendet wird, um einen einzelnen Wert aus der Abfrage abzurufen. Dadurch entfällt die Notwendigkeit, einen Datenleser zu durchlaufen, und das Ergebnis wird direkt in den gewünschten Datentyp (in diesem Fall eine Ganzzahl) konvertiert:

public bool read(string id)
{
    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;
}
Nach dem Login kopieren

Durch die Anwendung dieser Best Practices können Sie die IndexOutOfBoundsException und vermeiden Stellen Sie die zuverlässige Ausführung parametrisierter Abfragen in Ihrer MySQL-Datenbank mit C# sicher.

Das obige ist der detaillierte Inhalt vonWie behebt man die IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen in MySQL mit C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage