[解決済み] java.sql.SQLException パラメータインデックスが範囲外です(1 > パラメータ数、これは0です)[closed]。
2022-02-04 08:14:39
質問事項
選択したコンボボックスが検証された後、データベースに挿入することができません。Tomcatは次のようなエラーを出します。
java.sql.SQLException: パラメータインデックスが範囲外です(パラメータ数1、0)。
この原因は何ですか、またどのように解決すればよいですか?
どのように解決するのですか?
のいずれかを呼び出すと、このエラーが表示されます。
setXxx()
メソッドを
PreparedStatement
一方、SQL クエリ文字列にはプレースホルダーがありません。
?
を使用します。
例えば、これは いけない :
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
プレースホルダーを指定するために、SQLクエリ文字列を適宜修正する必要があります。
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
パラメータのインデックスが
1
を実行していること。
ではない
のようにプレースホルダーを引用する必要があります。
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";
なぜなら、SQL パーサーはこれらを実際の文字列値として解釈してしまい、プレースホルダーを見つけることができなくなってしまうからです。
こちらもご覧ください。
関連
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】破損したjarファイル
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み】javaで無効な文字定数
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】破損したjarファイル
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] テスト
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。