如何使用 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://127.0.0.1/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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告