好吧,我有一个简单的代码应该执行SQL SERVER查询并返回结果集,但是我收到了以下错误:
the execute query must return a resultset
参见代码:
statement.executeQuery();
这个executeQuery()执行一个返回超过100K行的查询,在SQL SERVER控制台中一切正常但在java NOT中。我改变了查询,添加了" TOP 10"和executeQuery()正常工作。
executeQuery()中存在一些超时?正如我所说,我需要返回很多行。
答案 0 :(得分:0)
数据库每次查询返回的行数通常有最大限制。
因此,您需要做的是重复结果集,并且必须多次调用数据库服务器。
此setMaxRows方法对动态可滚动游标无效。 应用程序应使用SELECT TOP N SQL语法来限制数量 从可能很大的结果集返回的行。
您可以使用以下内容:
SELECT TOP N SQL
更多阅读here。
您可以尝试做的另一件事是使用for循环拆分查询并动态设置limit
。然后,您可以按照您想要的方式处理resultset
。
答案 1 :(得分:0)
尝试使用EXCEPT语句(例如):
(SELECT * FROM table_name) EXCEPT (SELECT TOP M FROM table_name)
您需要在for循环的每次迭代中计算M的值。 M可以是例如:
M = N / 2,N / 4,3 * N / 4等......
您可以使用以下查询获取N的值:
SELECT COUNT(*) FROM table_name