如何使用 JDBC 从驱动程序管理器的驱动程序列表中取消注册驱动程序?
jdbcobject oriented programmingprogramming更新于 2025/4/21 3:22:17
java.sql.DriverManager 类管理应用程序中的 JDBC 驱动程序。此类维护所需驱动程序的列表,并在初始化时加载它们。
因此,您需要在使用驱动程序类之前注册它。但是,每个应用程序只需执行一次。
您可以通过两种方式注册新的驱动程序类 −
- 使用 DriverManager 类的 registerDriver() 方法。您需要将 Driver 对象作为参数传递给此方法。
//实例化驱动程序类 Driver driver = new com.mysql.jdbc.Driver(); //注册驱动程序 DriverManager.registerDriver(driver);
- 使用名为 Class 的 类 的 forName() 方法。对于此方法,您需要将驱动程序的名称作为字符串参数传递。
Class.forName("com.mysql.jdbc.Driver");
注销驱动程序
您可以使用其 deregisterDriver() 方法从 DriverManager 的列表中删除特定驱动程序。
如果您通过传递所需驱动程序类的对象来调用此方法,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 {
//实例化 Driver 类
Driver mySQLDriver = new com.mysql.jdbc.Driver();
//注册 Driver
DriverManager.registerDriver(mySQLDriver);
//获取连接
String mysqlUrl = "jdbc:mysql://localhost/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: ");
//检索所有驱动程序的列表
Enumeration<Driver> e = DriverManager.getDrivers();
//打印列表
while(e.hasMoreElements()) {
System.out.println(e.nextElement().getClass());
}
System.out.println();
//取消注册 MySQL 驱动程序
DriverManager.deregisterDriver(mySQLDriver);
System.out.println("List of all the Drivers after de-registration:");
e = DriverManager.getDrivers();
//打印列表
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

