如果我们有一个包含 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 确实警告说它是

关于mysql - JDBC 返回错误的受影响行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36523589/

10-14 01:23