该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()方法。对于此方法,您需要将驱动程序的名称作为String参数传递。
Class.forName("com.mysql.jdbc.Driver");
您可以使用其deregisterDriver()方法从DriverManager的列表中删除特定的Driver 。
如果通过传递所需的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://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: "); //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