PreparedStatement executeBatch返回值的问题 PreparedStatement在调用executeBatch方法后,怎么判断哪些sql语句是运行成功的,哪些是失败的?我取它的返回数组int[] 怎么都是-3,但我数据库里确实有数据成功插进去了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有数据插进去了肯定说明成功了.你取为什么返回int[]? 以下摘自 JDK API 文档:int[] executeBatch() throws SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的 int 元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。方法 executeBatch 返回的数组中的元素可能为以下元素之一:大于等于 0 的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为:EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。返回:包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。 抛出:SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateException(SQLException 的子类)。其中整形常量的值分别为:SUCCESS_NO_INFO -2EXECUTE_FAILED -3 应该是数组里大于0的才是成功update的。 executeBatch是从Statement继承的方法executeBatch返回的数组中的元素可能为以下元素之一:1.大于或等于零的数。指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数 2.SUCCESS_NO_INFO = -2。指示成功执行了命令,但受影响的行数是未知的 3.EXECUTE_FAILED = -3。指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现 JDBC 规范是一回事,实现是另一回事,如果 JDBC 实现有问题,你别想得到正确的结果。可以把这批 SQL 放到一个事务里,要么都成功然后提交事务,要么如果有一条的执行结果不 >= 0 || == SUCCESS_NO_INFO 就回滚事务。 使用Eclipse打jar包生成的jar文件里面的图片加载不了 请大家帮帮我!Exception in thread "main" java.lang.NoClassDefFoundError :TFMath java怎么获取路由信息? 过年好!!java中如何利用java.io进行文本输入?? 请问ibm的mq如何用java访问? 简单问题 大哥大姐帮帮忙 如何让应用程序在系统启动后就自动运行呢 如何变换背景颜色? jvm 1.1.5对Swing的支持怎么样? 给分2 急急急,在线等! 怎么实现String的减法
你取为什么返回int[]?
int[] executeBatch() throws SQLException
将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的 int 元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。方法 executeBatch 返回的数组中的元素可能为以下元素之一:
大于等于 0 的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的
如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为:
EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现
在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。
返回:包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。
抛出:SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateException(SQLException 的子类)。其中整形常量的值分别为:
SUCCESS_NO_INFO -2
EXECUTE_FAILED -3
executeBatch返回的数组中的元素可能为以下元素之一:
1.大于或等于零的数。指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
2.SUCCESS_NO_INFO = -2。指示成功执行了命令,但受影响的行数是未知的
3.EXECUTE_FAILED = -3。指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现
JDBC 规范是一回事,实现是另一回事,如果 JDBC 实现有问题,你别想得到正确的结果。可以把这批 SQL 放到一个事务里,要么都成功然后提交事务,要么如果有一条的执行结果不 >= 0 || == SUCCESS_NO_INFO 就回滚事务。