我的代码非常简单。但是在运行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条记录。
答案 0 :(得分:17)
您正在每个循环中创建一个新的PreparedStatement。每个语句只添加一个批处理,只执行最后一个语句。
将ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?);
移到循环之外。
答案 1 :(得分:0)
你怎么知道应该插入5行?
为了实现这一点,必须对addBatch
方法进行5次调用,这很可能意味着您的代码必须在循环中迭代5次。请检查是否发生这种情况。
另外,请注意,您的INSERT
语句似乎希望将数据插入7列,而每行只设置5个列值。
答案 2 :(得分:-1)
我有同样的问题,问题是;在我准备好的语句字符串的末尾。刚删除;从字符串中它起作用。