gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:41:38 24 4
gpt4 key购买 nike

我尝试使用 PreparedStatement.executeBatch() 执行批处理查询,并 try catch 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数组...为什么?

注意:

批量更新异常 -

SystemErr R java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("TABLE_ABC"."AMOUNT")

代码从其中读取数据的 CSV 文件...预计第三条记录中出现错误

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,

最佳答案

嗯,根据javadoc ,您会得到一个 int 来表示每个成功执行的语句的更新计数,因此空数组表明批处理中的第一个语句失败。

Retrieves the update count for each update statement in the batch update that executed successfully before this exception occurred.

正如您从异常中可以看出的那样,CSV 中的空值导致了失败。因此,您要么允许该列为 NULL,要么检查是否为 null 并插入 0。

至于 updateCounts:如果您的批处理在一个事务中运行(这是有道理的),那么所有插入都将在错误时滚动 nack - 导致什么也不做。

关于java - JDBC - Oracle - BatchUpdateException.getUpdateCounts() 返回空白数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com