0

私は次のコードを持っています

if (rs != null)
{
  out.println("result set has got something");
  while (rs.next())
  { 
    //I am processing result set now
  }
}
else
{
  out.println("result set is empty");
}

rsがnullであっても、「結果セットに何かがあります」と出力されます。なぜそれがそのように起こっているのですか、そしてどうすれば空の結果セットをチェックできますか?

4

4 に答える 4

5

次の方法で確認できます。

if(rs != null && rs.next()) {
    out.println("result set has got something");
    do {
        // do what you have to do
    } while (rs.next());
} else {
    out.println("result set is empty");
}
于 2012-05-09T09:31:48.630 に答える
1

クエリ結果として返される JDBC ResultSet オブジェクトが null になることはありません。javadoc を参照してください。つまり、チェックの方法が間違っています。ResultSet.next()代わりにメソッドを使用できます。

于 2012-05-09T09:36:26.493 に答える
0

オブジェクトは、データのResultSet現在の行を指すカーソルを維持します-呼び出し元のメソッドが、特定のクエリを介してステートメントを実行し、;を使用してNullポインターを処理することによって、渡された結果セットが生成される保証がない場合を除きます。

if(rs !=null && rs.next())
{
 ..
}

不可欠です-しかし、あなたが扱っているなら

ResultSet rs = stmt.executeQuery(..);

次に、ヌルポイントチェックを実行する必要はありません。ポイントに直接移動して、データを保持しているかどうかをResultSetに確認してください。

String name=null;
while (rs.next()) 
{
 name =rs.getString(1);
}

次に、このような値を処理します。

if(name !=null && name.length()>0)
{
 ..        
}
于 2012-05-09T09:43:47.057 に答える
0

レコード セットの場合は、常に Java が提供する三項演算子を使用することをお勧めします。例:

名前をユーザー オブジェクト pojo に設定するとします。

myUser.setName(null != recordSet.getString("name") ? recordSet.getString("name") : "Guest");

お役に立てれば。

于 2015-12-18T09:01:31.340 に答える