@Test
public void fun() throws ClassNotFoundException, SQLException
{
/*
* jdbc 四大配置参数:
* >driverClassName:com.mysql.jdbc.Driver
* >url: jdbc:mysql://localhost:3306/数据库名
* >用户名
* >密码
*/
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mydb3";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
System.out.println(con);
}
这是常规java程序连接数据库的流程。
当程序运行到 Class.forName(“com.mysql.jdbc.Driver”); 时,类加载器加载了com.mysql.jdbc.Driver这个类,通过找寻该类的源代码
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
发现该类有如上的静态代码块,在该类加载时,会执行静态代码块的内容,因此代码也有相当于如下代码
@Test
public void fun() throws ClassNotFoundException, SQLException
{
/*
* jdbc 四大配置参数:
* >driverClassName:com.mysql.jdbc.Driver
* >url: jdbc:mysql://localhost:3306/数据库名
* >用户名
* >密码
*/
com.mysql.jdbc.Driver driver=new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
String url="jdbc:mysql://localhost:3306/mydb3";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
System.out.println(con);
}
这样就将这两行代码的关系联串起来。