2016-04-01 17 views
0

私は、私はこのエラーを取得しています、結果セット(RSET)JDBC単一行のResultSetアクセスエラー

rSet.first(); 
do{ 
    product = rSet.getString("PRODUCT"); 
    process = rSet.getString("PROCESS"); 
    s_int = rSet.getInt("S_INT"); 

    System.out.println("Hello Product["+rSet.getString("PRODUCT")+"] Process["+rSet.getString("PROCESS")+"] S_Int["+rSet.getInt("sint")+"]"); 
}while(rSet.next()); 

を使用していたデータにアクセスするには

Product | Process | s_int 
-------------------------- 
W01  | AP_03 | 1 

以下のような単一行問合せの出力loksを持っています:

The result set has no current row and the returns are null and 0.

私は間違っていますか?

+0

あなたがhttps://docs.oracle.com/javase/8/docsを参照して、( 'if'付き)あなたの最初の'() '呼び出しの結果をチェックする必要があります/api/java/sql/ResultSet.html#first()簡単な方法は、ここでdo/whileを置き換えることです。 –

+0

あなたはデータにアクセスする前に 'next()' **を呼び出す必要があります。あなたのコードはそれを呼び出す_after_その –

答えて

1

ResultSet.first()は、それが行上であるかどうかを示すbooleanを返します。

true if the cursor is on a valid row; false if there are no rows in the result set

ResultSetにアクセスしようとする前にこれを確認してください。コードへの代替構造:

//final ResultSet rSet = stmt.executeQuery("..."); 
while (rSet.next()) 
{ 
} 
+0

私はしようとしました(rSet.next()) { }私は同じエラーが発生しています。しかし、rSetは1つになっている間にカウンタとして空ではありません – Dhiman

+0

@Dhimanあなたはwhileループで**のことをする必要があります。そうしないと、whileループが終了すると**最後の行の後になります。 do-while-loopをwhile-loopに置き換え、 'first()'への不要な呼び出しを取り除くだけで済みます。 –

関連する問題