mysql – JDBC返回错误数量的受影响的行

如果我们有一个包含10行的表,并且我们执行此查询两次,则第二次得到错误的受影响行数.

Statement st = open();

st.executeUpdate("UPDATE  `tickets` SET price=1000"); // return 10
st.executeUpdate("UPDATE  `tickets` SET price=1000"); // return 10

显然这是不正确的,因为在第一个查询中,所有行的价格都更新为1000,而在第二个查询中没有任何实际更改,但它再次返回10!

如何获取实际更新的行数?

解决方法:

JDBC规范显然规定驱动程序具有executeUpdate()返回UPDATE语句找到的行数,而不是实际受影响的行数.

要让MysqL Connector / J返回实际更改的行数,您可以将属性useAffectedRows = true添加到您的连接URL,尽管documentation确实警告它是

not JDBC-compliant, will break most applications that rely on “found” rows vs. “affected rows” for DML statements

相关文章

连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软...
JDBCRequest 使用VariableNamesmysql:数据库连接池对象var...
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术...
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java....
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务...
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:...