Java ExecuteBatch()仅插入1行

时间:2013-12-11 14:18:59

标签: java jdbc

我的代码非常简单。但是在运行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();

但是,只插入一条记录而不是5条记录。

3 个答案:

答案 0 :(得分:17)

您正在每个循环中创建一个新的PreparedStatement。每个语句只添加一个批处理,只执行最后一个语句。

ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?);移到循环之外。

答案 1 :(得分:0)

你怎么知道应该插入5行?

为了实现这一点,必须对addBatch方法进行5次调用,这很可能意味着您的代码必须在循环中迭代5次。请检查是否发生这种情况。

另外,请注意,您的INSERT语句似乎希望将数据插入7列,而每行只设置5个列值。

答案 2 :(得分:-1)

我有同样的问题,问题是;在我准备好的语句字符串的末尾。刚删除;从字符串中它起作用。