mysql批处理之getUpdateCounts()的使用

这几天,做项目时,为了提高数据入库的速率,就使用addBatch()进行批处理。

 

当然,先要把Connection设置为setAutoCommit(false)

 

然后Statement添加addBatch(sql语句)

 

接着Statement执行executeBatch(),其返回值为int[]类型的数组,其值表示执行成功(1或-2)或失败(-3)。当然最后还需要执行Connection.commit()。

 

但是,如果执行出错,会抛出SQLException,此时结果将不会保存在int[]数组中。由于此时需要保存处理结果,记录哪几条执行成功,哪几条执行失败,所以得想办法获得执行的结果。调试时看到SQLException e中有一条updateCounts数组中保存了执行结果,但是此时仍然无法获得结果。在Google中输入updateCounts后,在http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/sql/BatchUpdateException.html中查到java.sql.BatchUpdateException继承自java.sql.SQLException,于是将catch语句中的SQLException e改为BatchUpdateException,这样就可以获得执行结果了:int[] result = e.getUpdateCounts()。

 

还有一个需要注意到地方,就是errorCode可能会1062或1054。

 

真是好不容易解决的,就记录一下,加深下印象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值