Java & MySQL - 結果集



讀取資料庫查詢資料的 SQL 語句將資料返回到結果集中。SELECT 語句是從資料庫中選擇行並將其顯示在結果集中的標準方法。java.sql.ResultSet 介面表示資料庫查詢的結果集。

ResultSet 物件維護一個指向結果集中當前行的遊標。術語“結果集”指的是 ResultSet 物件中包含的行和列資料。

ResultSet 介面的方法可以分為三類:

  • 導航方法 - 用於在結果集中移動遊標。

  • 獲取方法 - 用於檢視遊標指向的當前行中列的資料。

  • 更新方法 - 用於更新當前行中列的資料。這些更新也可以更新到底層資料庫中。

遊標是根據 ResultSet 的屬性可移動的。這些屬性是在建立生成 ResultSet 的相應 Statement 時指定的。

JDBC 提供以下連線方法來建立具有所需 ResultSet 的語句:

  • createStatement(int RSType, int RSConcurrency);

  • prepareStatement(String SQL, int RSType, int RSConcurrency);

  • prepareCall(String sql, int RSType, int RSConcurrency);

第一個引數指示 ResultSet 物件的型別,第二個引數是兩個 ResultSet 常量之一,用於指定結果集是隻讀的還是可更新的。

ResultSet 型別

下面給出可能的 RSType。如果您沒有指定任何 ResultSet 型別,則會自動獲得一個 TYPE_FORWARD_ONLY 型別。

型別 描述
ResultSet.TYPE_FORWARD_ONLY 遊標只能在結果集中向前移動。
ResultSet.TYPE_SCROLL_INSENSITIVE 遊標可以向前和向後滾動,並且結果集對建立結果集後其他人對資料庫進行的更改不敏感。
ResultSet.TYPE_SCROLL_SENSITIVE. 遊標可以向前和向後滾動,並且結果集對建立結果集後其他人對資料庫進行的更改敏感。

ResultSet 的併發性

下面給出可能的 RSConcurrency。如果您沒有指定任何併發性型別,則會自動獲得一個 CONCUR_READ_ONLY 型別。

併發性 描述
ResultSet.CONCUR_READ_ONLY 建立一個只讀結果集。這是預設值
ResultSet.CONCUR_UPDATABLE 建立一個可更新的結果集。

我們迄今為止編寫的所有示例都可以按如下方式編寫,它初始化一個 Statement 物件以建立一個僅向前、只讀的 ResultSet 物件:

try(
   Statement stmt = conn.createStatement(
      ResultSet.TYPE_FORWARD_ONLY,
      ResultSet.CONCUR_READ_ONLY);)
}
catch(Exception ex) {
   ....
}
finally {
   ....
}
廣告

© . All rights reserved.