1.Class.forName
2.javajdbc连接sqlserver的时候,不需要写class.forname
Class.forName
ä¸è¾¹æ¯mysql-connector-java-5.1.6-bin.jarçDriveræºä»£ç ï¼
----com.mysql.jdbc.Driver----------------------------------------------------
.package com.mysql.jdbc;
.import java.sql.SQLException;
.public class Driver extends NonRegisteringDriver implements java.sql.Driver {
. // ~ Static fields/initializers
. // ---------------------------------------------
. //
. // Register ourselves with the DriverManager
.//
. static {
. try {
. java.sql.DriverManager.registerDriver(new Driver());
. } catch (SQLException E) {
. throw new RuntimeException("Can't register driver!");
. }
. }
. public Driver() throws SQLException {
. // Required for Class.forName().newInstance()
. }
.}
------------------------------------------------------------------------
å ¶å®ï¼å¨Class.forName()çæ¶åç³»ç»ä¼æ§è¡å¨æå 载类çstaticåï¼ä¹å°±æ¯-è¡ï¼å ¶ä¸ç代ç æ¯åDriverManager注åMySQLçDriverï¼ç°å¨å¤§å®¶ç¥é为ä»ä¹è¦æ§è¡Class.forName()äºåï¼ï¼ï¼
ä¹å°±æConnection conn = DriverManager.getConnection("è¿æ¥å符串");äºã
javajdbc连接sqlserver的时候,不需要写class.forname
Java JDBC 连接 SQL Server 不需书写 class.forName 的原理在于高版本的 Oracle 和 MySQL 已采用最新 SPI 技术,驱动类名在 jar 包的 META-INF/services/java.sql.Driver 文件中定义。DriverManager 源码中的Linux怎么查找源码静态块 loadInitialDrivers() 显示,这行代码能加载类路径下所有 jar 包中 META-INF/services/java.sql.Driver 文件定义的类,此类需继承自 java.sql.Driver。ZUC算法源码Class.forName 的md文件源码主要目的是初始化数据库驱动,执行驱动的静态块代码,其实质是 DriverManager.registerDriver(driver); 方法。由于开发者的明确配置,驱动包发布时已直接指定驱动名,因此无需再次书写 class.forName。