ホームページ >Java >&#&チュートリアル >Java PreparedStatement が「パラメーター インデックスが範囲外です」をスローするのはなぜですか?
データベースにデータを挿入しようとすると、「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 文字列内でプレースホルダーを引用符で囲む必要はありません。これを実行すると、同じエラーが発生します。
以上がJava PreparedStatement が「パラメーター インデックスが範囲外です」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。