微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐