0

我原来的环境是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

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

4

1 回答 1

2

您正在尝试使用 执行生成多个结果集或不生成结果集(例如UPDATEINSERT)的查询executeQuery。该方法的 Javadoc明确指出:

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

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

于 2013-01-05T10:18:40.053 回答