PreparedStatement executeBatch

时间:2014-09-02 23:30:21

标签: java sql

我正在尝试使用prepared语句的executeBatch功能。在返回的数组中,-2中的所有值。谁能告诉我这个价值的含义是什么?

索引0处的值= -2 指数1处的值是= -2
指数2处的值是= -2
指数3处的值为= -2
指数4处的值= -2 指数5处的值是= -2

在数据库中,所有行都正确插入。

谢谢, SD

2 个答案:

答案 0 :(得分:1)

表示SUCCESS_NO_INFO

来自java.sql.Statement:

/**
 * The constant indicating that a batch statement executed successfully
 * but that no count of the number of rows it affected is available.
 *
 * @since 1.4
 */
int SUCCESS_NO_INFO = -2;

您可以使用这些常量来检查您获得的响应是​​否是所需的响应。在您的情况下,看起来所有的呼叫都是成功的。但是,没有更多的额外信息要返回(例如:受影响的行)

答案 1 :(得分:0)

这还取决于您使用的数据库版本。如果得到的-2表示SUCCESS_NO_INFO,则必须使用Oracle 11g。 Oracle 11g的一个问题是,即使没有行更新,它仍将返回-2。或者,如果没有删除任何行,它将仍然返回-2。

在Oracle 12c中,executeBatch的响应得到增强。就像您观察到-2或-3常数数组一样。 -2用于成功执行,-3用于失败。现在使用12c,它是一个整数数组,实际行受sql语句影响。例如[2,3,0,1,10 ...]。告诉两行的第一个索引会受到执行第一个sql的影响,第二个sql会影响3个行,依此类推...