提问人:Rob N 提问时间:2/13/2014 最后编辑:Lukas EderRob N 更新时间:12/30/2021 访问量:6136
在 SQL Server 中,JDBC getUpdateCount 返回 0,但更新了 1 行
JDBC getUpdateCount is returning 0, but 1 row is updated, in SQL Server
问:
有人见过这个吗?我正在使用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 的查询库,它返回不正确的结果,因为它调用了 和 .我最初把这个问题排除在外,因为我认为这不是图书馆的错。executeUpdate
execute
getUpdateCount
答:
0赞
Terry Carmen
7/20/2016
#1
更新语句需要“executeUpdate”。
executeUpdate 返回 rowcount。如果没有返回记录集,“execute”只会返回 false,而 UPDATE 则不会返回 false。
评论
1赞
Rob N
7/21/2016
你读过我的整个问题吗?我解释了我没有问的具体原因. 并且应该可以工作,根据 Java 文档。executeUpdate
execute
getUpdateCount
评论
int count = executeUpdate();
execute()
execute()
executeUpdate
execute()
false
getUpdateCount()
getMoreResults()
execute
true
getUpdateCount()
-1