2013-12-11 6 views
5

私のコードはとても簡単です。 executeBatch()を実行した後は1行だけがDBに入ります。Java ExecuteBatch()は1行だけを挿入します

コードは以下である:

//INSIDE LOOP: 
{ 
ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?); 

// setting bind variable values 
ps.setLong(1, ed_fi_uid); 
ps.setString(2 , ed_date); 
ps.setString(3, ed_hash_key); 
ps.setLong(4 , ed_et_uid); 
ps.setLong(5, ed_etn_uid); 

ps.addBatch(); 
} 
//LOOP ENDS 

ps.executeBatch(); 

しかし、1つのレコードのみではなく、5枚のレコードから挿入されます。

+1

完全なコードを投稿してください。 – user987339

+1

5?準備されたステートメントで5つの変数を使用していますが、5つのレコードは使用していません... – PeterMmm

答えて

16

各ループに新しいPreparedStatementを作成しています。各ステートメントは1つのバッチを追加するだけで、最後のステートメントだけが実行されます。

ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?);をループ外に移動します。

+1

こんにちはMichael !!!これはまさに問題でした!今すぐ働くファイン!!乾杯男、おとぎ話!アブドラ –

0

5行を挿入する必要があることをどのように知っていますか?

これを実行するには、addBatchメソッドを5回コールする必要があります。これは、コードがループを5回反復しなければならない可能性が非常に高いことを意味します。これが起こっているかどうか確認してください。

また、INSERTのステートメントは、各行に5つの列の値を設定している間は、7つの列にデータを挿入すると思われます。

-1

私は同じ問題を抱えていました。準備されたステートメントストリングの終わりに。ただ削除されました。文字列からそれが働いた。

関連する問題