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

Rob*_*b N 9 java sql-server jdbc sql-server-2008 jooq

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

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.
Run Code Online (Sandbox Code Playgroud)

是什么造成的?

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

Ter*_*men 0

您的更新语句需要“executeUpdate”。

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