web-dev-qa-db-ja.com

ResultSetが空であるかどうかをJava

プログラムでHSQLDBを使用しています。結果セットが空かどうかを確認したい。

_//check if empty first
if(results.next() == false){
System.out.println("empty");
}

//display results
while (results.next()) {
String data = results.getString("first_name");
//name.setText(data);
System.out.println(data);
}
_

上記の方法は正しく機能していません。これによると post カーソルを最初の行に置くには、.first()または.beforeFirst()を呼び出す必要がありますが、.first()および.beforFirst()はHSQLではサポートされていません。また、connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);を追加しようとしましたが、それでも同じ結果が得られます(メッセージが空になり、DBからデータが取得されます!!!)ここで何が間違っているのでしょうか。

6
Max Pain

私があなたの目的を理解しているなら、あなたはdo whileループを使うことができます

if (!results.next()) {
  System.out.println("empty");
} else {
  //display results
  do {
    String data = results.getString("first_name");
    //name.setText(data);
    System.out.println(data);
  } while (results.next());
}

または、countをそのように保持することもできます。

int count = 0;
//display results
while (results.next()) {
  String data = results.getString("first_name");
  //name.setText(data);
  System.out.println(data);
  count++;
}
if (count < 1) {
  // Didn't even read one row
}
12
Elliott Frisch