day45-JDBC和连接池01( 三 )


day45-JDBC和连接池01

文章插图
day45-JDBC和连接池01

文章插图
day45-JDBC和连接池01

文章插图
day45-JDBC和连接池01

文章插图
例子
package li.jdbc;import com.mysql.jdbc.Driver;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;public class jdbcConn {//方式3 使用DriverManager替换Driver进行统一管理@Testpublic void connect03() throws Exception {//使用反射加载Driver类Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");Driver driver = (Driver)aClass.newInstance();//创建 url和 user 和 passwordString url = "jdbc:mysql://localhost:3306/hsp_db02";String user = "root";String password = "123456";DriverManager.registerDriver(driver);//注册Driver驱动Connection connection = DriverManager.getConnection(url, user, password);System.out.println("方式3="+connection);}}2.2.4方式4使用Class.forName自动完成注册驱动 , 简化代码
day45-JDBC和连接池01

文章插图
例子
//方式4 使用Class.forName自动完成注册驱动 , 简化代码// 这种方式获取连接是使用得最多的 , 推荐使用@Testpublic void connect04() throws Exception {//使用反射加载Driver类//在加载Driver类时 , 完成了注册/*** 在 Driver类的源码中:* 1.静态代码块在类加载时会执行一次* 2.DriverManager.registerDriver(new Driver());* 3.因此 注册Driver的工作已经在底层完成了*static {*try {*DriverManager.registerDriver(new Driver());*} catch (SQLException var1) {*throw new RuntimeException("Can't register driver!");*}*}*/Class.forName("com.mysql.jdbc.Driver");//创建 url和 user 和 passwordString url = "jdbc:mysql://localhost:3306/hsp_db02";String user = "root";String password = "123456";Connection connection = DriverManager.getConnection(url, user, password);System.out.println("方式4="+connection);}方法4相比于方法3 , 减少了注册驱动的操作 , 但是连接数据库的步骤不是需要注册驱动吗?为什么可以这样呢?
在Driver类的源码中 , 我们可以看到有这样的一个静态代码块:
day45-JDBC和连接池01

文章插图
而静态代码块在类加载时会执行一次 , 在使用反射加载Driver类时 , 就执行了DriverManager.registerDriver(new Driver());语句 。
即在加载Driver类时 , 完成了注册 。因此 , 可以在程序中省略注册的步骤 。
注意:
  1. mysql驱动5.1.6之后连Class.forName("com.mysql.jdbc.Driver");也不需要写了
  2. 从jdk1.5以后使用了jdbc4 , 不再需要显式调用Class.forName()注册驱动 , 而是自动调用驱动jar包下的META-INF\services\java.sql.Driver文本中的类名称去注册
    day45-JDBC和连接池01

    文章插图
  3. 但是还是建议写上Class.forName("com.mysql.jdbc.Driver"); , 更加明确
2.2.5方式5在方式4的基础上使用配置文件 , 连接数据库更加灵活
day45-JDBC和连接池01

文章插图
day45-JDBC和连接池01

文章插图
例子
首先在src文件夹下面创建一个Properties文件
user=rootpassword=123456url=jdbc:mysql://localhost:3306/hsp_db02driver=com.mysql.jdbc.Driver方式5:推荐使用

经验总结扩展阅读