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
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP