Java异常:该语句未返回结果集

时间:2013-01-05 09:33:13

标签: sql-server jdbc websphere

我的原始环境是 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等)配合良好。

请给我任何指针,你的推荐对我很有价值,谢谢。

1 个答案:

答案 0 :(得分:2)

您正在尝试使用UPDATE执行生成多个结果集或不生成结果集(例如INSERTexecuteQuery等)的查询。 Javadoc for this method明确说:

  

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

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