如果我们有一个包含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 举报,一经查实,本站将立刻删除。