我正在尝试运行一些更新并最终返回一些我可以使用的结果集,但结果始终为空。我的代码是
PreparedStatement preparedStatement = aConnection.prepareStatement(script);
boolean results = preparedStatement.execute();
如果我的查询是
BEGIN
Declare @MyLog as varchar(max) = '---------------------- '
+ CHAR(10) + CHAR(10)
BEGIN
BEGIN TRAN
UPDATE MPRN SET K4101 = 'N'
select * from HELD_FLOW
COMMIT TRAN
END
END
该语句不返回任何值。但是,如果我的查询是
BEGIN
Declare @MyLog as varchar(max) = '---------------------- '
+ CHAR(10) + CHAR(10)
BEGIN
BEGIN TRAN
select * from HELD_FLOW
UPDATE MPRN SET K4101 = 'N'
COMMIT TRAN
END
END
返回所有值!所以更新和选择的顺序很重要!我想首先更新一些值,最后返回一些输出,如第一个示例所示,但不起作用......
最佳答案
一切尽在javadoc :
The
execute
method executes an SQL statement and indicates the form of the first result. You must then use the methodsgetResultSet
orgetUpdateCount
to retrieve the result, andgetMoreResults
to move to any subsequent result(s).
您的过程返回多个结果,execute
显示第一个结果的类型。在第一个示例中,第一个结果是更新计数,第二个结果是结果集,因此您分别得到 false
和 true
。
您应该使用getMoreResults
处理剩余结果并找到 ResultSet。
关于java - jdbc 结果集为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34220668/