Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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-Oracle-BatchUpdateException.getUpdateCounts()返回空数组_Java_Oracle_Jdbc_Prepared Statement - Fatal编程技术网

Java JDBC-Oracle-BatchUpdateException.getUpdateCounts()返回空数组

Java JDBC-Oracle-BatchUpdateException.getUpdateCounts()返回空数组,java,oracle,jdbc,prepared-statement,Java,Oracle,Jdbc,Prepared Statement,我正在尝试使用PreparedStatement.executeBatch()执行批处理查询,并尝试捕获BatchUpdateException中发生的任何异常。但是我在调用BatchUpdateException.getUpdateCounts()时得到一个空数组 下面是我的代码: int[] updateCounts = null; PreparedStatement stmt = null; // some logic to set the stmt and create the

我正在尝试使用
PreparedStatement.executeBatch()
执行批处理查询,并尝试捕获
BatchUpdateException
中发生的任何异常。但是我在调用
BatchUpdateException.getUpdateCounts()
时得到一个空数组

下面是我的代码:

int[] updateCounts = null;  
PreparedStatement stmt = null;  
// some logic to set the stmt and create the SQL query
try {  
if (count % 100 == 0)   
    {  
        updateCounts = stmt.executeBatch();  
     }  
} catch (BatchUpdateException bu)  
{   
        updateCounts = bu.getUpdateCounts();  
}
在这里,当异常发生时,我得到一个空数组
updateCounts
。。。为什么?

注:

BatchUpdateException-

SystemErr R java.sql.BatchUpdateException:ORA-01400:无法 将空值插入(“ABC表”“金额”)

CSV文件,代码从中读取数据。。。第3条记录中应有错误

Asof_Date,Price_Date,Amount
12/15/2015,11/26/2014,-2646.937686
12/15/2015,11/28/2014,5053.611471
12/15/2015,1/22/2015,
12/15/2015,1/23/2015,
根据,每个成功执行的语句的更新计数都会得到一个int,因此空数组表示批处理的第一个语句失败

检索在此异常发生之前成功执行的批处理更新中每个update语句的更新计数

从异常中可以看出,CSV中的空值会导致失败。因此,您要么允许该列为NULL,要么检查是否为NULL,然后插入0


至于updateCounts:如果您的批处理在一个事务中运行(这很有意义),那么所有插入都会在出错时滚动nack-导致什么都没有做。

空数组是指长度为0的数组吗?如果是这样,那么很可能是因为您没有向批处理中实际添加任何内容,例如,
count
为0。打印异常可能会产生一些错误insight@Andreas-它有11条记录,即根据Javadoc,计数为11。。。“BatchUpdateException提供在批更新期间成功执行的所有命令的更新计数,也就是说,在错误发生之前执行的所有命令”,我甚至不知道如何使用bu.printStackTrace()打印您的异常并将其发布到您的问题更新答案中,以反映您的新信息。是否有任何方法进行批量插入/更新,并了解单个查询的成功或失败?您能否共享实际语句的代码(编辑问题)?如何填写值等?