0

Eclipse から jdbc:odbc 接続を使用して MS Access データベースにデータを挿入しようとしています。次のようなエラー メッセージが表示されます。

java.lang.ArrayIndexOutOfBoundsException 4  

問題は、基になるテーブルの自動番号フィールド (最初のインデックス) をスキップしていることだと確信しています。Access が入力するため、スキップする必要があると考えました。したがって、基になるテーブルに 5 つのフィールドがある場合、4 つの ? を使用して次の PreparedStatement を作成し、フィールド 2、3、4、および 5 を参照しようとします。

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable VALUES (?, ?, ?, ?");  
//code then populates each field, starting with index 2
ps.setString(2,"Thunder");
//...

私のアプローチは間違っているようです。ただし、追加の ? を追加すると、他の問題が発生するようです。テーブルの最初のフィールドとして自動付番の主キーがある場合、MS Access データベースのテーブルに INSERT ステートメントを書き込む正しい方法は何ですか?

4

1 に答える 1

3

SQL 文字列内のプレースホルダーのインデックスは?、テーブル内の列宣言から独立しています

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable VALUES (?, ?, ?, ?");  

1から4まで行く必要があります。

それらを列と一致させたい場合は、それらの名前を指定する必要があります

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable (col1, col2, col3, col4) VALUES (?, ?, ?, ?");  

インデックスには 1 ~ 4 を使用する必要がありますが、実際に使用している列を指定できるようになりました。

であるために最初の列をスキップしたい場合はauto_increment、それを行うことができますが、それでもインデックスを で開始し、1持っているプレースホルダーの数まで上げる必要があります。

于 2013-10-07T21:24:05.180 に答える