Heim > Datenbank > MySQL-Tutorial > Wie löst man IndexOutOfBoundsException in MySQL-parametrisierten Abfragen mit C# auf?

Wie löst man IndexOutOfBoundsException in MySQL-parametrisierten Abfragen mit C# auf?

DDD
Freigeben: 2024-12-22 02:25:14
Original
795 Leute haben es durchsucht

How to Resolve IndexOutOfBoundsException in MySQL Parameterized Queries with C#?

Parametrierte Abfragen in MySQL mit C#: Adressierung von IndexOutOfBoundsException

Beim Arbeiten mit parametrisierten Abfragen in MySQL unter Verwendung von C# ist es wichtig sicherzustellen, dass die Parameternamen und -werte korrekt sind Vermeiden Sie Ausnahmen. In diesem Fall tritt beim Hinzufügen des ersten Parameters eine IndexOutOfBoundsException auf.

Um dieses Problem zu beheben, überprüfen Sie, ob die Parameternamen in der Abfragezeichenfolge und die dem MySqlCommand-Objekt hinzugefügten Parameter übereinstimmen. Beachten Sie außerdem Folgendes:

Nicht übereinstimmende Parameternamen

Im bereitgestellten Code:

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

Sie haben fälschlicherweise verwendet? Platzhalter in der Abfragezeichenfolge, die von MySQL nicht unterstützt werden. Stattdessen erwartet MySQL benannte Parameter, die mit @ beginnen sollten.

Codeänderungen

Ersetzen Sie die Abfragezeichenfolge durch Folgendes:

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

Verwenden Sie zusätzlich die Methode AddWithValue So fügen Sie Parameter zum Befehlsobjekt hinzu:

m.Parameters.AddWithValue("@param_val_1", val1);
m.Parameters.AddWithValue("@param_val_2", val2);
Nach dem Login kopieren

Dadurch wird sichergestellt, dass die Parameternamen mit den Platzhaltern in der Abfrage übereinstimmen string.

Rückgabewert

Im geänderten Code wird der Ebenenwert mithilfe von ExecuteScalar anstelle von ExecuteReader abgerufen. Dies liegt daran, dass die Abfrage einen einzelnen Wert (Ebene) zurückgibt, sodass die Verwendung von ExecuteScalar effizienter ist.

Durch diese Änderungen sollten Sie in der Lage sein, die parametrisierte Abfrage auszuführen, ohne dass Ausnahmen auftreten.

Das obige ist der detaillierte Inhalt vonWie löst man IndexOutOfBoundsException in MySQL-parametrisierten Abfragen mit C# auf?. 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