2

MSSQL から結果を取得し続けるためにループを実行したい (しばらく時間がかかる場合があります)。ループの do 部分を実行しました。ただし、mssql から結果 (行) が返されない場合にループを停止するメソッドを見つけることができます。私のコードは次のとおりです。

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

行が返されない場合、ループを終了するためにどのメソッドを使用する必要がありますか。mssql から結果が返された場合にブール値を返す結果セットのメソッド、または行数を返すメソッドはありますか。行が返されない場合は 0。

4

3 に答える 3

3

boolean next()を使用
カーソルを現在の位置から 1 行前に移動します。ResultSet カーソルは、最初は最初の行の前に配置されます。メソッド next の最初の呼び出しでは、最初の行が現在の行になります。2 番目の呼び出しでは、2 番目の行が現在の行になります。 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(); これをくれる…

Q. 一度に 1 つの行だけを選択する正当な理由はありますか??

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 に答える