如何使用 JDBC 從驅動程式管理器驅動程式列表中登出驅動程式?


java.sql.DriverManager 類在您的應用程式中管理 JDBC 驅動程式。此類維護所需驅動程式的列表,並在初始化時載入它們。

因此,您需要在使用驅動程式類之前註冊它。但是,您只需要在每個應用程式中執行一次。

您可以透過兩種方式註冊新的 Driver 類:

  • 使用 DriverManager 類的 registerDriver() 方法。為此方法,您需要將 Driver 物件作為引數傳遞。
//Instantiating a driver class Driver driver = new com.mysql.jdbc.Driver();
//Registering the Driver DriverManager.registerDriver(driver);
  • 使用名為 Class 的類的 forName() 方法。為此方法,您需要將 Driver 的名稱作為 String 引數傳遞。
Class.forName("com.mysql.jdbc.Driver");

登出驅動程式

您可以使用 DriverManagerderegisterDriver() 方法從其列表中刪除特定的驅動程式。

如果您透過所需的 Driver 類物件呼叫此方法,則 DriverManager 會簡單地將其列表中指定的驅動程式刪除。

DriverManager.deregisterDriver(mySQLDriver);

以下 JDBC 程式建立與 MySQL 資料庫的連線,顯示所有已註冊到 DriverManager 類的驅動程式,登出 MySQL 驅動程式,並再次顯示列表。

示例

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Enumeration;
public class DeRegistering_Driver {
   public static void main(String args[])throws Exception {
      //Instantiating a Driver class
      Driver mySQLDriver = new com.mysql.jdbc.Driver();
      //Registering the Driver
      DriverManager.registerDriver(mySQLDriver);
      //Getting the connection
      String mysqlUrl = "jdbc:mysql:///sampledatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established....... ");
      System.out.println();
      System.out.println("List of all the Drivers registered with the DriverManager: ");
      //Retrieving the list of all the Drivers
      Enumeration<Driver> e = DriverManager.getDrivers();
      //Printing the list
      while(e.hasMoreElements()) {
         System.out.println(e.nextElement().getClass());
      }
      System.out.println();
      //De-registering the MySQL Driver
      DriverManager.deregisterDriver(mySQLDriver);
      System.out.println("List of all the Drivers after de-registration:");
      e = DriverManager.getDrivers();
      //Printing the list
      while(e.hasMoreElements()) {
         System.out.println(e.nextElement().getClass());
      }
      System.out.println();
   }
}

由於我們已從 DriverManager 的列表中刪除了驅動程式,因此您在第二次檢視列表時將找不到 MySQL 驅動程式的名稱。

輸出

Connection established.......
List of all the Drivers registered with the DriverManager:
class oracle.jdbc.OracleDriver
class org.sqlite.JDBC
class org.apache.derby.jdbc.AutoloadedDriver
class org.apache.derby.jdbc.ClientDriver
class org.hsqldb.jdbc.JDBCDriver
class net.ucanaccess.jdbc.UcanaccessDriver
class com.mysql.jdbc.Driver
List of all the Drivers after de-registration:
class oracle.jdbc.OracleDriver
class org.sqlite.JDBC
class org.apache.derby.jdbc.AutoloadedDriver
class org.apache.derby.jdbc.ClientDriver
class org.hsqldb.jdbc.JDBCDriver
class net.ucanaccess.jdbc.UcanaccessDriver

更新於: 2019-07-30

529 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.