java.sql public interface ResultSet


java.sql public interface ResultSet
extends Wrapper, AutoCloseable
表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
ResultSet對象維護一個指向其當前數據行的遊標。 最初光標位於第一行之前。 next方法將光標移動到下一行,因爲當ResultSet對象中沒有更多行時它返回false ,所以可以在while循環中使用它來遍歷結果集。
默認的ResultSet對象是不可更新的,並且有一個只能向前移動的遊標。 因此,您只能遍歷它一次,並且只能從第一行到最後一行。 可以生成可滾動和/或可更新的ResultSet對象。 下面的代碼片段,其中con是一個有效的Connection對象,說明了如何製作一個可滾動的、對其他人的更新不敏感且可更新的結果集。 見ResultSet字段的其他選項。

Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
// rs will be scrollable, will not show changes made by others,
// and will be updatable


ResultSet接口提供了用於從當前行檢索列值的getter方法( getBoolean 、 getLong等)。 可以使用列的索引號或列名來檢索值。 一般來說,使用列索引會更有效率。 列從 1 開始編號。爲了獲得最大的可移植性,應按從左到右的順序讀取每行中的結果集列,並且每列應僅讀取一次。
對於 getter 方法,JDBC 驅動程序嘗試將底層數據轉換爲 getter 方法中指定的 Java 類型並返回合適的 Java 值。 JDBC 規範有一個表,顯示了從 SQL 類型到可由ResultSet getter 方法使用的 Java 類型的允許映射。
用作 getter 方法輸入的列名不區分大小寫。 當使用列名調用 getter 方法並且多個列具有相同名稱時,將返回第一個匹配列的值。 列名選項旨在在生成結果集的 SQL 查詢中使用列名時使用。 對於查詢中未明確命名的列,最好使用列號。 如果使用列名,程序員應該注意確保它們唯一地引用預期的列,這可以通過 SQL AS子句來保證。
JDBC 2.0 API(Java™ 2 SDK,標準版,1.2 版)中的此接口添加了一組更新程序方法。 有關 getter 方法參數的註釋也適用於 updater 方法的參數。
更新程序方法可以通過兩種方式使用:
更新當前行中的列值。 在可滾動的ResultSet對象中,光標可以前後移動、移動到絕對位置或相對於當前行的位置。 以下代碼片段更新ResultSet對象rs第五行中的NAME列,然後使用方法updateRow更新從中派生rs的數據源表。

rs.absolute(5); // moves the cursor to the fifth row of rs
rs.updateString("NAME", "AINSWORTH"); // updates the
// NAME column of row 5 to be AINSWORTH
rs.updateRow(); // updates the row in the data source


將列值插入插入行。 可更新的ResultSet對象有一個與之關聯的特殊行,用作構建要插入的行的暫存區。 以下代碼片段將光標移動到插入行,構建一個三列行,然後使用insertRow方法將其插入到rs和數據源表中。

rs.moveToInsertRow(); // moves cursor to the insert row
rs.updateString(1, "AINSWORTH"); // updates the
// first column of the insert row to be AINSWORTH
rs.updateInt(2,35); // updates the second column to be 35
rs.updateBoolean(3, true); // updates the third column to true
rs.insertRow();
rs.moveToCurrentRow();


當生成它的Statement對象關閉、重新執行或用於從多個結果序列中檢索下一個結果時, ResultSet對象將自動關閉。
ResultSet對象的列的數量、類型和屬性由ResultSet.getMetaData方法返回的ResultSetMetaData對象提供。
另見:
Statement.executeQuery , Statement.getResultSet , ResultSetMetaData
< 1.8 >
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章