????????JDBC?????????????????????????????????(???????MySQL?????)????????

 

DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");

??????????????????????????????????DriverManager???????£?

 

public static synchronized void registerDriver(java.sql.Driver driver)
throws SQLException {
if (!initialized) {
initialize();
}
DriverInfo di = new DriverInfo();
di.driver = driver;
di.driverClass = driver.getClass();
di.driverClassName = di.driverClass.getName();
// Not Required -- drivers.addElement(di);
writeDrivers.addElement(di);
println("registerDriver: " + di);
/* update the read copy of drivers vector */
readDrivers = (java.util.Vector) writeDrivers.clone();
}

???????????DriverManager?????????????????????????????DriverInfo????????writeDrivers?У????writeDrivers??DriverManager???????????static????Vector????????getConnection?????????????
???????Class.forName("com.mysql.jdbc.Driver")???????????????????????????Class.forName("????")??????????????????????????Class?????????????com.mysql.jdbc.Driver???????

 

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!");
}
}

?????? com.mysql.jdbc.Driver??????ξ??????飬???? DriverManager??????Driver??????????? Class.forName("com.mysql.jdbc.Driver")?????????????????????????飬?????DriverManager.registerDriver(new Driver())?????????Ч????
???????????????????????????????????????????Class.forName("????")???????????????
????1???????????DriverManager.registerDriver(new Driver())????????????????????????????????????????Driver????
????2?? DriverManager.registerDriver(new Driver())??????????MySQL?????????????Class.forName????????????????????е???????????