행복한 미소
사랑의 신과 악라오
A: "왜 중국보다 서양에서 이혼이 더 많은지 아세요?"
B : "이건 간단한 일이 아닙니다. 서양의 사랑의 신 큐피드는 인형이고, 중국의 큐피드는 달 아래 노인이기 때문입니다. 물론 경험이 훨씬 더 많습니다! "
질문하기
DriverManager 클래스를 간단하게 학습? ? ?
문제 해결
DriverManager는 java.sql 패키지에 있으며 JDBC 드라이버의 기본 서비스 집합을 관리합니다.
[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()); } } }
실행 결과:
[code]org.mariadb.jdbc.Driver@7cef4e59 com.alibaba.druid.proxy.DruidDriver@3ada9e37 com.alibaba.druid.mock.MockDriver@4ec6a292 org.postgresql.Driver@71c7db30
설명, 우리 프로젝트 패키지에는 아래와 같은 데이터베이스 드라이버가 있으므로 다음 정보가 인쇄됩니다.
둘의 차이점은
DriverManager.registerDriver(new Driver()); Class.forName(“com.mysql.jdbc.Driver”);
org.postgresql.Driver 클래스 소스코드를 보면 다음과 같다. postgresql이 싱글톤 형태와 새로운 드라이버를 사용하고 있다는 것을 알 수 있다. 예를 들어, 데이터베이스에 연결할 때 새 Driver
[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; } }
를 만든 후에 DriverManager의 소스 코드를 살펴보겠습니다. DriverInfo,
[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); }Class.forName(“com.mysql.jdbc.Driver” ;
위는 Java의 DriverManager에 대한 간략한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요. )!