Heim > Datenbank > MySQL-Tutorial > Wie vermeide ich IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen mit MySQL in C#?

Wie vermeide ich IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen mit MySQL in C#?

Susan Sarandon
Freigeben: 2024-12-15 09:29:09
Original
842 Leute haben es durchsucht

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

Parametrierte Abfrage für MySQL mit C#

Bei der Arbeit mit SQL-Abfragen werden parametrisierte Abfragen dringend empfohlen. Sie schützen vor SQL-Injection-Angriffen und verbessern die Leistung, indem sie die Verkettung von Zeichenfolgenwerten überflüssig machen.

Bei der Verwendung parametrisierter Abfragen mit MySQL aus C# ist es jedoch wichtig, sicherzustellen, dass Ihr Code richtig konfiguriert ist. Ein möglicher Fehler, der auftreten kann, ist eine IndexOutOfBoundsException beim Hinzufügen des ersten Parameters.

Das Problem:

Im angegebenen Code:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";
Nach dem Login kopieren

Das Problem liegt in der Abfragezeichenfolge, die ein Fragezeichen (?) als Platzhalter für Parameter verwendet. MySQL erkennt Fragezeichen nicht als Parameterplatzhalter; Es erwartet benannte Parameter mit dem Präfix „@“.

Die Lösung:

Um das Problem zu beheben, müssen Sie die Abfragezeichenfolge ändern, um benannte Parameter zu verwenden, und das hinzufügen Parameter zum MySqlCommand-Objekt mithilfe der AddWithValue()-Methode:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
Nach dem Login kopieren
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;
}
Nach dem Login kopieren

Durch die Verwendung benannter Parameter und der AddWithValue()-Methode wird die Abfrage erfolgreich ausgeführt, ohne dass eine IndexOutOfBoundsException auftritt.

Das obige ist der detaillierte Inhalt vonWie vermeide ich IndexOutOfBoundsException bei der Verwendung parametrisierter Abfragen mit MySQL in 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage