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。

 

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

 

 

你可能感兴趣的:(java,sql,mysql,Google,sun)