【问题标题】:Java exception: the statement didn't return a resultsetJava 异常:语句未返回结果集
【发布时间】:2013-01-05 09:33:12
【问题描述】:

我原来的环境是SQL server 2005 + WebSphere v6.0(JDBC 3.0)。当我运行如下程序时,它运行良好。

ResultSet rs=stmt.executeQuery(sql);
rs.next();

但是,当我将环境升级到 SQL server 2005 + WebSphere v8.5(JDBC 4.0) 时,我收到错误消息:

com.microsoft.sqlserver.jdbc.SQLServerException: 语句没有 返回一个结果集。

从这个论坛的信息来看,我似乎有多个结果集,所以我尝试如下更改程序,它工作正常。

stmt.execute(sql);
stmt.getMoreResults();
stmt.getMoreResults();
ResultSet rs=stmt.getResultSet();
rs.next();

我的问题是,有什么方法可以让我的程序保持不变,并且可以很好地与JDBC 4.0 driver(WAS v8.5)SQL svr 2000 + WAS v8.5 等任何组合一起使用。

请给我任何指点,您的建议对我很有价值,谢谢。

【问题讨论】:

  • 请发表声明,对分析很有用。

标签: sql-server jdbc websphere


【解决方案1】:

您正在尝试使用executeQuery 执行产生多个结果集或不产生结果集的查询(例如UPDATEINSERT 等)。 Javadoc for this method 明确表示:

抛出:SQLException - 如果发生数据库访问错误,则在关闭的语句上调用此方法,给定的 SQL 语句生成单个 ResultSet 对象以外的任何内容

您要么需要使用executeUpdate 方法(如果它实际上是更新/插入/删除,或者execute,然后使用生成的booleangetMoreResults() 来决定如何继续。

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多