如果我们有一个包含 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/