Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC批量更新和处理异常?_Java_Jdbc_Batch File_Updates - Fatal编程技术网

Java JDBC批量更新和处理异常?

Java JDBC批量更新和处理异常?,java,jdbc,batch-file,updates,Java,Jdbc,Batch File,Updates,在我使用JDBC处理40000多条数据记录的过程中。为了提高性能,我使用了PreparedStatement和批处理更新 是否需要建议来处理批量更新中的异常?如何处理异常,如何知道在处理40000条记录中的5001条记录时发生的异常 提前感谢通过使用getCause()和getNextException()分析异常,您将最终找到JDBCException/SQLException 现在,向上转换到congrete数据库depend exception,当然,您将找到congrete问题/cong

在我使用JDBC处理40000多条数据记录的过程中。为了提高性能,我使用了PreparedStatement和批处理更新

是否需要建议来处理批量更新中的异常?如何处理异常,如何知道在处理40000条记录中的5001条记录时发生的异常


提前感谢

通过使用getCause()和getNextException()分析异常,您将最终找到JDBCException/SQLException

现在,向上转换到congrete数据库depend exception,当然,您将找到congrete问题/congrete索引(即nr 5001)的标识符


还可以尝试具有更高JDBC版本(即jdbc4)的不同JDBC驱动程序。

您可以使用BatchUpdateException。请参阅下面的代码。你可以在这里找出错误

try {
  // statements related to batch updates....
} catch (BatchUpdateException be) {
   //handle batch update exception
   be.printStackTrace();
   int[] counts = be.getUpdateCounts();
   for (int i=0; i<counts.length; i++) {
       System.out.println("Statement["+i+"] :"+counts[i]);
   }
}
试试看{
//与批处理更新相关的语句。。。。
}捕获(BatchUpdateException be){
//处理批更新异常
be.printStackTrace();
int[]counts=be.getUpdateCounts();

对于(int i=0;i使用BatchUpdateException来处理批更新的异常

您必须编写代码,找出导致错误的原因。我建议使用10到100的较小批处理,这取决于哪个批可以提供最佳性能。您指的是哪种异常(任何代码示例)?我想这是关于事务处理的……将批处理“分块”可能是有意义的,例如,在一定数量的更新后提交事务(尽管这可能会导致数据不一致——至少在逻辑上是如此)。