Heim >Datenbank >MySQL-Tutorial >Warum löst meine MySQL-parametrisierte Abfrage in C# eine IndexOutOfBoundsException aus?

Warum löst meine MySQL-parametrisierte Abfrage in C# eine IndexOutOfBoundsException aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 17:06:17931Durchsuche

Why Does My MySQL Parameterized Query in C# Throw an IndexOutOfBoundsException?

Parametrierte Abfragen für MySQL mit C#

Diese Frage befasst sich mit einem häufigen Problem, das bei der Verwendung parametrisierter Abfragen mit MySQL in C# auftritt. Der bereitgestellte Code enthält die relevanten Teile des Codes, die das Problem aufwerfen.

Frage:

Der Codeausschnitt enthält eine parametrisierte Abfrage mit zwei Fragezeichen (?) als Platzhalter für Parameterwerte. Beim Hinzufügen des ersten Parameters tritt beim Benutzer jedoch eine IndexOutOfBoundsException auf. Was stimmt mit dem Code nicht?

Antwort:

Der bereitgestellte Code initialisiert das MySqlCommand-Objekt mit einer parametrisierten Abfrage, aber den Platzhalter-Fragezeichen wird nicht das „@“ vorangestellt. " Zeichen, das für benannte Parameter in MySQL erforderlich ist. Der korrigierte Code lautet wie folgt:

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;
}

In diesem korrigierten Code:

  • Die readCommand-Zeichenfolge wird geändert, um benannte Parameter mit der Syntax „@param_name“ zu verwenden.
  • Die AddWithValue-Methode wird verwendet, um die Parameter zum Befehl hinzuzufügen und sicherzustellen, dass die Parameternamen mit den in der angegebenen übereinstimmen Abfrage.
  • Die ExecuteScalar-Methode wird verwendet, um die Abfrage auszuführen und einen einzelnen Skalarwert (in diesem Fall die Ebene) abzurufen.

Das obige ist der detaillierte Inhalt vonWarum löst meine MySQL-parametrisierte Abfrage in C# eine IndexOutOfBoundsException 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