Java DatabaseMetaData 的 supportsTransactionIsolationLevel() 方法及示例
JDBC 透過 Connection 介面支援 5 個事務隔離級別。
TRANSACTION_NONE:用整數 0 表示,不支援事務。
TRANSACTION_READ_COMMITTED:用整數 2 表示,支援事務,允許不可重複讀和幻讀。
TRANSACTION_READ_UNCOMMITTED:用整數 1 表示,支援事務,允許髒讀、不可重複讀和幻讀。
TRANSACTION_REPEATABLE_READ:用整數 4 表示,支援事務,只允許幻讀。
TRANSACTION_SERIALIZABLE:用整數 8 表示,支援事務,不允許髒讀、不可重複讀和幻讀。
DatabaseMetaData 介面的 supportsTransactionIsolationLevel() 方法用於確定底層資料庫是否支援指定的隔離級別。
此方法接受一個表示事務隔離級別的整數,並返回一個布林值:
- 如果底層資料庫支援指定的隔離級別,則返回 True。
- 如果底層資料庫不支援指定的隔離級別,則返回 False。
要確定底層資料庫是否支援所需的事務隔離級別:
- 確保您的資料庫正在執行。
- 使用 DriverManager 類的 registerDriver() 方法註冊驅動程式。傳遞與底層資料庫對應的驅動程式類的物件。
- 使用 DriverManager 類的 getConnection() 方法獲取連線物件。將資料庫的 URL、使用者名稱和密碼作為字串變數傳遞。
- 使用 Connection 介面的 getMetaData() 方法獲取當前連線的 DatabaseMetaData 物件。
- 最後,呼叫 ResultSetMetaData 介面的 supportsTransactionIsolationLevel() 方法,並將返回值儲存在布林變數(例如 bool)中。如果該值為 true,則底層資料庫支援事務隔離級別,否則不支援。
以下 JDBC 程式建立與 MySQL 資料庫的連線,並確定並列印它是否支援指定的事務隔離級別。
示例
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseMetadata_supportsTransactionIsolationLevel { 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 TransactionIsolationLevel boolean bool = metaData.supportsTransactionIsolationLevel(2); if(bool) { System.out.println("Underlying database supports the specified TransactionIsolationLevel"); } else { System.out.println("Underlying database does not support the specified TransactionIsolationLevel"); } } }
輸出
Connection established...... Underlying database supports TransactionIsolationLevel
廣告