关于JDBC批量操作中异常BatchUpdateException的getUpdateCounts()方法

我想要批量添加数据,如果数据个别有错误则记录并跳过继续运行后面的,在BatchUpdateException捕获异常中,getUpdateCounts()在Stateme... 我想要批量添加数据,如果数据个别有错误则记录并跳过继续运行后面的,在BatchUpdateException捕获异常中,getUpdateCounts()在Statement拼SQL之后addBatch(sql)的办法就可以正确显示出成功录入的行数,但是用PreparedStatement方法设入数据后提交,getUpdateCounts()显示的都是该次批量的总行数,无法正确显示已经成功录入了多少行,不知道这是不是JDBC的BUG, 有没有遇到过这种情况的麻烦说下怎么解决的?

list = new ArrayList<Person>();
for (int i = 0; i < 200; i++) {
Person p = new Person();
if (i==27 || i==45 || i==3 || i==19 || i==165) {
p.setId(1);
}else {
p.setId(i);
}
p.setName(i+"===");
p.setAge(i);
list.add(p);
}
try {
for (Person person : list) {
st.addBatch("insert into test values("+person.getId()+",'"+person.getName()+"',"+person.getAge()+")");
// ps.setInt(1, person.getId());
// ps.setString(2, person.getName());
// ps.setInt(3, person.getAge());
// ps.addBatch();
}
int[] ints = st.executeBatch();
System.out.println(ints.length+"======");
}catch (BatchUpdateException e) {
e.printStackTrace();
System.out.println(e.getUpdateCounts().length+"---------");
}
求解 没有多少分 谢谢各位大神了 这是我一个测试程序 主键是ID 想让他抛异常
展开
 我来答
匿名用户
2015-02-02
展开全部
此类问题的出现主要来自三个方面。
1、 SQL语句中存在语法错误或是传入的数据有误;
2、 数据库的配置不合法,或者说是配置有误。较容易出现的有数据表的映射文件(,hbm.xml文件)配置有误;Hibernate.cfg.xml文件配置有误;
3、 当前的数据库用户权限不足,不能操作数据库。以是以Oracle 数据库为例,这种情况下在错误提示中会显示java.sql.BatchUpdateException: ORA-01031: insufficient privileges这样的信息。
追问
完全不是这个问题 ………
百度网友f2e84bec9
2019-05-17
知道答主
回答量:1
采纳率:0%
帮助的人:745
展开全部
int amount = 0;
try {
...

} catch (BatchUpdateException e) {
e.printStackTrace();
int[] counts = e.getUpdateCounts();
for (int k: counts) {
if (k != 1) {
amount+=1;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式