Glückliches Lächeln
Der Gott der Liebe und Yue Lao
A: „Wissen Sie, warum es in westlichen Ländern mehr Scheidungen gibt als in China?“
B : „Das ist noch nicht einfach, denn Amor im Westen ist eine Puppe, während der Chinese ein alter Mann unter dem Mond ist und natürlich viel mehr Erfahrung hat!“
Stellen Sie eine Frage
Einfaches Erlernen der DriverManager-Klasse? ? ?
Das Problem lösen
DriverManager ist im java.sql-Paket enthalten und verwaltet eine Reihe grundlegender Dienste des JDBC-Treibers
[code]package com.evada.de; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.util.Enumeration; /** * 用静态工厂方法管理一个唯一的可重用的连接 * Created by Ay on 2016/5/1. */ public class ConnUtils{ private ConnUtils(){} private static Connection con; //在静态代码块中创建与数据库的连接 static{ try{ //postgresql驱动名称 Class.forName("org.postgresql.Driver"); //数据库连接路径 String url = "jdbc:postgresql://127.0.0.1:5432/postgres"; //用户名和密码 con = DriverManager.getConnection(url, "postgres", "888888"); }catch(Exception e){ throw new RuntimeException(e.getMessage(),e); } } //使用一个静态方法-静态工厂方法,返回connection实例 public static Connection getCon(){ return con; } //main函数测试用 public static void main(String[] args) { //获取所有的数据库驱动 Enumeration<Driver> driverEnum = DriverManager.getDrivers(); //打印出所有驱动信息 while(driverEnum.hasMoreElements()){ System.out.println(driverEnum.nextElement()); } } }
Ausführungsergebnisse:
[code]org.mariadb.jdbc.Driver@7cef4e59 com.alibaba.druid.proxy.DruidDriver@3ada9e37 com.alibaba.druid.mock.MockDriver@4ec6a292 org.postgresql.Driver@71c7db30
Erklärung: Da unser Projektpaket den unten gezeigten Datenbanktreiber enthält, werden die folgenden Informationen gedruckt:
Der Unterschied zwischen den beiden:
DriverManager.registerDriver(new Driver()); Class.forName(“com.mysql.jdbc.Driver”);
Der Quellcode der Klasse org.postgresql.Driver ist wie folgt: Ein neuer Treiber, d into DriverInfo,
[code]static { sharedTimer = new SharedTimer(logger); try { //注册 register(); } catch (SQLException var1) { throw new ExceptionInInitializerError(var1); } protocols = new String[]{"jdbc", "postgresql"}; } public static void register() throws SQLException { if(isRegistered()) { throw new IllegalStateException("Driver is already registered......); } else { Driver registeredDriver = new Driver(); DriverManager.registerDriver(registeredDriver); registeredDriver = registeredDriver; } }Class.forName ("com.mysql.jdbc.Driver"); Fazit: DriverManager.registerDriver(new Driver()); eine Verschwendung; während Class.forName("com.mysql.jdbc.Driver" ); Singleton-Formular ist mehr zu empfehlen...
[code]// public static synchronized void registerDriver(java.sql.Driver driver, DriverAction da) throws SQLException { /* Register the driver if it has not already been added to our list */ if(driver != null) { //将驱动包装到DriverInfo中 registeredDrivers.addIfAbsent(new DriverInfo(driver, da)); } else { // This is for compatibility with the original DriverManager throw new NullPointerException(); } println("registerDriver: " + driver); }
Das Obige ist eine kurze Einführung in Javas DriverManager Achtung auf die chinesische PHP-Website (www.php.cn)!