ホームページ > データベース > mysql チュートリアル > C# を使用して MySQL パラメーター化クエリの IndexOutOfBoundsException を解決する方法

C# を使用して MySQL パラメーター化クエリの IndexOutOfBoundsException を解決する方法

DDD
リリース: 2024-12-22 02:25:14
オリジナル
774 人が閲覧しました

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

C# を使用した MySQL のパラメータ化されたクエリ: IndexOutOfBoundsException への対処

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート