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的查询库,它返回错误的结果,因为它正在调用execute
和getUpdateCount
.我最初离开了我的问题,因为我认为这不是图书馆的错.
您的更新语句需要“executeUpdate”。
executeUpdate 返回行计数。如果没有返回记录集,“execute”只会返回 false,而 UPDATE 则不会返回记录集。