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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-25 21:31:09794ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。