ホームページ > Java > &#&チュートリアル > Java データベース コードで「パラメータ インデックスが範囲外です」エラーが発生するのはなぜですか?

Java データベース コードで「パラメータ インデックスが範囲外です」エラーが発生するのはなぜですか?

DDD
リリース: 2024-12-13 01:51:10
オリジナル
566 人が閲覧しました

Why Am I Getting a

Java データベースのパラメータ インデックスが範囲外エラーです

Java を使用してデータベースと対話しようとすると、「java」エラーが発生する場合があります。 .sql.SQLException: パラメーター インデックスが範囲外です (1 > パラメーターの数、つまり 0)。」このエラーは、SQL ステートメントとそのパラメータに指定された値との間に不一致があることを示します。

原因:

このエラーは、PreparedStatement を使用してパラメータを設定しようとすると発生します。オブジェクトですが、対応する SQL ステートメントにはそのパラメーターのプレースホルダー (?) が含まれていません。クエリ内で対応するプレースホルダーを指定せずに setString() または他のセッター メソッドを使用すると、このエラーが発生します。

解決策:

このエラーを解決するには、SQL ステートメントが次のように設定されていることを確認してください。 PreparedStatement オブジェクトを通じて設定するすべてのパラメータのプレースホルダが含まれています。プレースホルダーはステートメント内では疑問符 (?) として表す必要があります。

例:

間違ったステートメント:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
ログイン後にコピー

正しいステートメント:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
ログイン後にコピー

追加考慮事項:

  • パラメータのインデックスは 1 から始まるため、ステートメント内の最初のプレースホルダは、PreparedStatement を通じて設定した最初のパラメータに割り当てる必要があります。
  • single または double の使用は避けてください。プレースホルダーを引用符で囲みます。これにより、プレースホルダーは文字列値として解釈されます。

その他のリソース:

  • [JDBC チュートリアル - 準備されたステートメント](https://docs.oracle.com/javase/tutorial /jdbc/basics/prepared.html)

以上がJava データベース コードで「パラメータ インデックスが範囲外です」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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