java - jdbc 结果集为空

标签 java sql-server jdbc

我正在尝试运行一些更新并最终返回一些我可以使用的结果集,但结果始终为空。我的代码是

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 methods getResultSet or getUpdateCount to retrieve the result, and getMoreResults to move to any subsequent result(s).

您的过程返回多个结果,execute 显示第一个结果的类型。在第一个示例中,第一个结果是更新计数,第二个结果是结果集,因此您分别得到 falsetrue

您应该使用getMoreResults处理剩余结果并找到 ResultSet。

关于java - jdbc 结果集为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34220668/

相关文章:

java - 通过套接字接收 Diffie-Hellman key 错误

java - 如何在Android Studio中设置Android Library模块并被多个项目引用?

java - 如何在 EventHandler 中使用 getCode()

java - 无法检测到以下 jdbc 代码中的错误

java - 如何使用 Java 从 MySQL DB 获取 CSV 文件形式的数据

sql-server - SET NOCOUNT ON 在 SQL Server Management Studio 中带回消息

sql-server - 捕获失败的 INSERT 值

sql-server - 一对多关系的级联删除

java - 通过命令行和 JDBC 查询获取的结果之间的差异

hadoop - Hive JDBC 中的无效 URL