Tomcat / Jdbc /该语句未返回结果集

时间:2017-10-10 08:01:54

标签: sql-server tomcat stored-procedures jdbc

我们使用JDBC来执行返回结果集的存储过程(SQL Server)。 连接是从Tomcat池中检索的。

工作正常。

但是,过了一段时间(应用程序启动后几天或几周),我们在PreparedStatement的executeQuery上遇到以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:408)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)
    at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:235)
    at com.sun.proxy.$Proxy5.executeQuery(Unknown Source)

在executeQuery上附加异常(参见beelow)

final PreparedStatement stmt = super.getConnection().prepareStatement("exec sp_storeprocedure ?, ?");
stmt.setString(1, "value1");
stmt.setString(2, "value2");
ResultSet rs = stmt.executeQuery();

0 个答案:

没有答案