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

Java PreparedStatement が「パラメーター インデックスが範囲外です」をスローするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-25 21:31:09
オリジナル
836 人が閲覧しました

Why Does My Java PreparedStatement Throw

エラー: "java.sql.SQLException: パラメーター インデックスが範囲外です (1 > パラメーターの数、つまり 0)"

問題

データベースにデータを挿入しようとすると、「java.sql.SQLException: Parameter」というメッセージを伴うエラーが発生します。インデックスが範囲外です (1 > パラメーターの数、つまり 0)"。

原因

このエラーは、プレースホルダー (?) を指定せずに PreparedStatement で setXxx() メソッドを呼び出すと発生します。 SQLクエリ内で。例:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Error occurs here
ログイン後にコピー

解決策

この問題を解決するには、SQL クエリにプレースホルダーを含めます。

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
ログイン後にコピー

パラメーターのインデックスは 1 から始まり、 SQL 文字列内でプレースホルダーを引用符で囲む必要はありません。これを実行すると、同じエラーが発生します。

追加リソース

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

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

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