2

我想运行一个循环(可能是一段时间)以继续从 MSSQL 获得结果。我已经完成了循环的部分。但是如果没有从 mssql 返回结果(行),可以找到一种方法来停止循环。我的代码是:

String query = "SELECT TOP 1 *  FROM tbl_Url WHERE UrlProcessed = 0";
PreparedStatement preparedquery = con.prepareStatement(query);
ResultSet results = preparedquery.executeQuery();

如果没有返回行,我应该使用什么方法来终止循环。如果从 mssql 返回任何结果或返回行数的方法,Resultset 是否有任何方法返回布尔值。如果没有返回行,则为 0。

4

3 回答 3

3

使用boolean next()
将光标从当前位置向前移动一行。ResultSet 游标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。 当调用 next 方法返回 false时,光标位于最后一行之后。

于 2012-05-19T19:18:15.447 回答
2

首先,您必须知道 ResultSet 对象维护一个指向其当前数据行的游标。最初,光标位于第一行之前。next 方法将光标移动到下一行,并且因为它在 ResultSet 对象中没有更多行时返回 false,所以可以在 while 循环中使用它来遍历结果集。

要获取行数,您可以尝试以下操作:

ResultSet results = preparedquery.executeQuery();

if (!results.next() ) {
System.out.println("no data");
}else{
results.last();
int rowCount = results.getRow();
}
于 2012-05-19T19:23:02.067 回答
1

如果您只是想找出 while 循环中的结果中是否包含任何行,如果没有则中断,ResultSet.first(); 会给你这个...

问:您一次只选择一行是否有充分的理由?

while(true){
    String query = "Select top 1 * from tbl_Url where UrlProcessed = 0";
    PreparedStatement preparedQuery = con.prepareStatement(query)
    ResultSet results = preparedquery.executeQuery();
    if(!results.first())
        break;
    // process data here...
}
于 2012-05-19T19:32:14.347 回答