我尝试使用连接器mysql-connector-java-5.1.6-bin.jar
更新MySql数据库中的一批记录。根据此answer,驱动程序可能会在一条记录失败的情况下继续运行,否则可能会引发异常。
如果一个语句失败,JDBC驱动程序可能会选择尝试执行批处理中的所有语句,或者一旦语句失败,它可能会选择停止在批处理中执行语句。
根据连接器jar的documentation,它表示continueOnError
默认为true。
continueBatchOnError
如果一个语句失败,驱动程序是否应继续处理批处理命令。 JDBC规范允许任何一种方式(默认为' true')。
默认值:true
自版本:3.0.3
我想根据一些业务逻辑更改此属性值。那么如何在我的实现中(在我的java代码中)将此属性设置为true或false。
注意:我无法更改连接参数。我只获取一个connection
对象并执行批量更新。
答案 0 :(得分:1)
如果连接是com.mysql.jdbc.JDBC4Connection
,您可以设置continueBatchOnError
标志:
JDBC4Connection mysqlCon = (JDBC4Connection)con;
boolean current = mysqlCon.getContinueBatchOnError();
mysqlCon.setContinueBatchOnError(false);
否则(例如,如果连接由连接池实现包装),您可以使用Connection.unwrap
获取JDBC4Connection
。