C# を使用して MySQL でパラメータ化されたクエリを操作する場合、パラメータの名前と値が正しいことを確認することが重要です。例外を避ける。この場合、最初のパラメータの追加中に IndexOutOfBoundsException が発生します。
この問題を解決するには、クエリ文字列内のパラメータ名と MySqlCommand オブジェクトに追加されたパラメータが一致していることを確認してください。さらに、次の点を考慮してください:
提供されたコード内:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";
誤って ? を使用しました。クエリ文字列内のプレースホルダーは、MySQL ではサポートされていません。代わりに、MySQL は @ で始まる名前付きパラメータを期待します。
クエリ文字列を次のものに置き換えます:
private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
さらに、AddWithValue メソッドを使用します。コマンド オブジェクトにパラメーターを追加するには:
m.Parameters.AddWithValue("@param_val_1", val1); m.Parameters.AddWithValue("@param_val_2", val2);
これにより、パラメーター名が確実に次のプレースホルダーと一致します。クエリ文字列。
変更されたコードでは、ExecuteReader の代わりに ExecuteScalar を使用してレベル値が取得されます。これは、クエリが単一の値 (レベル) を返すため、ExecuteScalar を使用する方が効率的であるためです。
これらの変更を行うことで、例外が発生することなくパラメータ化されたクエリを実行できるようになります。
以上がC# を使用して MySQL パラメーター化クエリの IndexOutOfBoundsException を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。