1

我正在使用 sql server 进行数据库连接。我想在运行多个结果集时保持结果集打开。我用过results = callableStatement.getMoreResults(Statement.KEEP_CURRENT_RESULT); 但是在执行语句时出现以下错误,

com.microsoft.sqlserver.jdbc.SQLServerException:不支持此操作。在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:228) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.NotImplemented(SQLServerStatement.java:601) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.getMoreResults (SQLServerStatement.java:2136) 在 au.com.techcreations.readonly.PurchaseOrderList.Fetch(PurchaseOrderList.java:99) 在 au.com.techcreations.readonly.PurchaseOrderList.(PurchaseOrderList.java:37) 在 au.com.techcreations .readonly.PurchaseOrderList.getPurchaseOrderListByOrderNumber(PurchaseOrderList.java:46) 在 au.com.techcreations.test.PurchaseOrderTest.GetPurchaseOrderByOrderNumber(PurchaseOrderTest.java:27) 在 sun.reflect.NativeMethodAccessorImpl。

由于我是使用 sql server 的新手,所以我对一些概念不太了解。如果有人知道为什么会这样,请回答我。

4

1 回答 1

1

需要 SQL Server 中的单独连接来同时处理多个结果集。SQL Server 确实具有多个活动结果集 (MARS)功能,该功能允许结果交错,但我认为 Microsoft JDBC 驱动程序当前不支持此功能。需要使用 ODBC、OLE DB 或 SqlClient 以及适当的驱动程序才能使用 MARS。

在您的情况下,使用单独的连接是解决方案。我个人不是 MARS 的粉丝,并且经常看到它与允许并发或异步语句执行的错误概念一起使用。

于 2018-03-22T09:45:38.263 回答