JDBC getUpdateCount 在 SQL Server 中返回 0,但更新了 1 行

2022-09-04 04:56:16

有人见过这个吗?我正在使用MS SQL Server 2008,并且我已经尝试使用两个不同的JDBC驱动程序(jtds和Microsoft的)。我运行一个简单的语句来更新一行,它确实更新了它,但返回0。如果我尝试对不同的表进行尝试,它将按预期返回1。这是关于这张桌子的东西。getUpdateCount

PreparedStatement ps = 
  conn.prepareStatement("select count(*) from foo_users where user_id = 1")
ResultSet rs = ps.executeQuery();
rs.next()
println(" count(*) is " + rs.getInt(1));    // Prints 1

ps = conn.prepareStatement("update foo_users set is_admin = 1 where user_id = 1")
ps.execute()
int count = ps.getUpdateCount()
println(" update count is " + count)        // Prints 0.  WTF.

这是什么原因造成的?

更新以回应评论:是的,有效。但是我问这个问题是因为我使用的是一个名为jOOQ的查询库,它返回了不正确的结果,因为它正在调用和。我最初没有问这个问题,因为我不认为这是图书馆的错。executeUpdateexecutegetUpdateCount


答案 1

更新语句需要“executeUpdate”。

executeUpdate 返回行计数。如果没有返回记录集,则“execute”仅返回 false,而 UPDATE 则不会返回该记录集。


答案 2

推荐