Java DatabaseMetaData 的 supportsResultSetType() 方法及示例


在建立 Statement 物件時,您可以使用以下 createStatement() 方法的變體來選擇 ResultSet 物件的併發性和型別:

Statement createStatement(int resultSetType, int resultSetConcurrency)

ResultSet 併發性

ResultSet 物件的併發性決定了其內容是否可以更新。

ResultSet 介面提供兩個值來指定併發性,即:

  • CONCUR_READ_ONLY:如果在建立 ResultSet 物件時將其設定為併發性的值,則無法更新 ResultSet 的內容,只能讀取/檢索它們。

  • CONCUR_UPDATABLE:如果在建立 ResultSet 物件時將其設定為併發性的值,則可以更新 ResultSet 的內容。

ResultSet 型別

ResultSet 物件的型別根據您可以遍歷的方向及其敏感性(ResultSet 中所做的更改是否反映在資料庫中)來確定結果集的型別。

ResultSet 介面提供三個值來指定 ResultSet 型別,即:

  • TYPE_FORWARD_ONLY:其遊標只能向前移動的 ResultSet 物件稱為僅向前 ResultSet。預設情況下,JDBC 結果集是僅向前結果集。

  • TYPE_SCROLL_INSENSITIVE:ResultSet 的遊標可以向前或向後移動。此型別的 ResultSet 對資料庫中所做的更改不敏感,即資料庫中所做的修改不會反映在 ResultSet 中。

  • TYPE_SCROLL_SENSITIVE:ResultSet 的遊標可以向前或向後移動。此型別的 ResultSet 對資料庫中所做的更改敏感,即資料庫中所做的修改會反映在 ResultSet 中。

DatabaseMetaData 介面的 supportsResultSetType() 方法用於確定底層資料庫是否支援指定的 ResultSet 型別。

此方法接受兩個整型引數,指定 ResultSet 型別,並返回一個布林值,即:

  • 如果底層資料庫支援儲存過程,則為 True。

  • 如果底層資料庫不支援儲存過程,則為 False。

要確定底層資料庫是否支援儲存過程:

  • 確保您的資料庫正在執行。

  • 使用 DriverManager 類的 registerDriver() 方法註冊驅動程式。傳遞與底層資料庫對應的驅動程式類的物件。

  • 使用 DriverManager 類的 getConnection() 方法獲取連線物件。將資料庫的 URL、使用者名稱和資料庫使用者的密碼作為字串變數傳遞。

  • 使用 Connection 介面的 getMetaData() 方法獲取當前連線的 DatabaseMetaData 物件。

  • 最後,呼叫 ResultSetMetaData 介面的 supportsResultSetType() 方法,並將返回值儲存在一個布林變數中,例如 bool。如果此值為 true,則底層資料庫支援儲存過程,否則不支援。

以下 JDBC 程式建立與 MySQL 資料庫的連線,並確定並列印它是否支援指定的 ResultSet 型別。

示例

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatabaseMetadata_supportsResultSetType {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String url = "jdbc:mysql:///mydatabase";
      Connection con = DriverManager.getConnection(url, "root", "password");
      System.out.println("Connection established......");
      //Retrieving the meta data object
      DatabaseMetaData metaData = con.getMetaData();
      //Determining whether the underlying database supports the specified ResultSet type
      boolean bool = metaData.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);
      if(bool) {
         System.out.println("Underlying database supports the specified ResultSet type");
      } else {
         System.out.println("Underlying database does not supports the specified ResultSet type");
      }
   }
}

輸出

Connection established......
Underlying database supports the specified ResultSet type

更新於: 2019-07-30

117 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.