我的原始环境是 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
等)配合良好。
请给我任何指针,你的推荐对我很有价值,谢谢。
安
答案 0 :(得分:2)
您正在尝试使用UPDATE
执行生成多个结果集或不生成结果集(例如INSERT
,executeQuery
等)的查询。 Javadoc for this method明确说:
抛出:SQLException - 如果发生数据库访问错误,则在已关闭的Statement上调用此方法,给定的SQL语句生成除单个ResultSet对象以外的任何内容
您需要使用executeUpdate
方法(如果它实际上是更新/插入/删除,或execute
,然后使用生成的boolean
和getMoreResults()
的结果决定如何继续。