executeQuery PreparedStatement重新调整null

时间:2016-12-05 17:47:11

标签: java sql-server

好吧,我有一个简单的代码应该执行SQL SERVER查询并返回结果集,但是我收到了以下错误:

the execute query must return a resultset

参见代码:

statement.executeQuery();

这个executeQuery()执行一个返回超过100K行的查询,在SQL SERVER控制台中一切正常但在java NOT中。我改变了查询,添加了" TOP 10"和executeQuery()正常工作。

executeQuery()中存在一些超时?正如我所说,我需要返回很多行。

2 个答案:

答案 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