ResultSetオブジェクトから結果を取得する

ResultSetオブジェクトは、SQLステートメントによって返されるデータのプライマリストレージメカニズムです。各ResultSetオブジェクトには、データとメタデータの両方が( ResultSetMetaDataオブジェクトの形式で)含まれています。 ResultSetMetaDataは、SQLコマンドによって返される結果に関する有用な情報(列名、列数、行数、列長など)が含まれています。

ResultSetオブジェクトに格納されている行データにアクセスするために、アプリケーションは1つ以上のgetterメソッドを呼び出します。 getterメソッドは、現在の行の特定の列の値を取得します。さまざまなgetterメソッドがあります。各メソッドは、特定のタイプの値を返します。たとえば、 getString()メソッドはSTRING型を返します。 getDate()メソッドはDate返し、 getInt()メソッドはINT型を返します。アプリケーションがgetterメソッドを呼び出すと、JDBCは値を要求された型に変換しようとします。

各ResultSetは、現在の行を指す内部ポインターを保持します。 executeQuery()メソッドがResultSet返すとき、ポインターは最初の行の前に配置されます。アプリケーションがポインターを移動する前にgetterメソッドを呼び出すと、 getterメソッドは失敗します。次の(または最初の)行に進むには、 ResultSet's next()メソッドを呼び出します。 ResultSet.next()はブールメソッドです。 ResultSet別の行がある場合はTRUE返し、最後の行を超えて移動した場合はFALSE返します。

ポインタを最初の行に移動した後、サンプルアプリケーションはgetString() getterメソッドを使用して最初の列の値を取得し、その値を出力します。 ListEmployeesはループ内でrs.next()およびrs.getString()を呼び出すため、結果セットの各行を処理します。 ListEmployees rs.next()がポインターを最後の行を超えて移動し、 FALSEを返すと、 rs.next()はループを終了しFALSE 。

while(rs.next())
{
System.out.println(rs.getString(1));
}

ResultSetインターフェースを使用する場合、次のことにResultSetてください。

  • 値を読み取る前にnext()呼び出す必要があります。 next()は、別の行が使用可能な場合にtrue返し、処理のために行を準備します。
  • JDBC仕様では、アプリケーションはResultSet各行に1回だけアクセスする必要があります。現時点では、Advanced Server JDBCドライバーを使用すると、必要な回数だけフィールドにアクセスできますが、この規則を守るのが最も安全です。
  • ResultSet使用が終了したら、 close()メソッドを呼び出して、そのオブジェクトが保持しているリソースを解放します。