私の Java コードでは
パラメータの数 (これは 0)" ですか? Java コードの「 /> パラメータの数、これは 0)」ですか? " />
トラブルシューティング "java.sql.SQLException: パラメーター インデックスが範囲外です (1 > パラメーターの数、つまり 0)"
レルム内Java プログラミングのエラー「java.sql.SQLException: パラメーター インデックスが範囲外です (1 > パラメーターの数、つまり0)" は、クエリ文字列に対応するプレースホルダーを指定せずに PreparedStatement を利用して SQL クエリを実行しようとすると発生します。
このエラーは、特に PreparedStatement で setXxx() メソッドを呼び出し、適切なデータ バインディングを確保するときに発生します。 SQL クエリにプレースホルダーが含まれていない場合、次のエラーが発生します。
原因:
エラーの根本的な原因は、SQL クエリにプレースホルダー (?) が存在しないことです。PreparedStatement は、これらのプレースホルダーに依存して、パラメータの挿入
解決策:
この問題を解決するには、SQL クエリを変更して、setXxx() メソッドを使用して設定する各パラメータのプレースホルダを含める必要があります。たとえば、
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
のようなクエリ文字列がある場合、それを次のように変更する必要があります。次のようになります:
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
パラメータのインデックスは 1 から始まることに注意することが重要です。したがって、次のようにプレースホルダを引用符で囲む必要はありません。
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";
そうすると、次のようになります。 SQL パーサーは引用符で囲まれたプレースホルダーをパラメーターのプレースホルダーではなく実際の文字列値として扱うため、同じエラーが発生します。
追加の考慮事項:
さらに詳しい情報については、次のリソースを参照することをお勧めします:
以上がJava コードで「java.sql.SQLException: パラメーター インデックスが範囲外です (1 > パラメーターの数、つまり 0)」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。