获取数据库连接的方式四

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1eJ411c7rf?p=10

额,这个说的原来就是我在前面的示例里发现的:

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionTest4 {

    @Test
    public void testConnection() throws SQLException, ClassNotFoundException {

        //1.获取 Driver 实现类的对象
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/guns";
        String user = "root";
        String password = "123456";

        Connection conn = DriverManager.getConnection(url, user, password);

        System.out.println(conn);

    }

}
com.mysql.cj.jdbc.ConnectionImpl@4278a03f

相较于方式三,省略了:

Driver driver = (Driver) clazz.newInstance();
DriverManager.registerDriver(driver);

注册驱动的实现已经在 第三方的驱动包里自己实现了,所以就只要通过类名加载类实例就可以

其实

对于使用 连接 MySQL Server 数据库的 mysql-connector-java-x.x.jar 的驱动包来说,这行代码:

Class.forName("com.mysql.cj.jdbc.Driver");

也是可以省略的,因为在 mysql-connector-java-x.x.x.jar 的驱动包下提供了配置文件:\META-INF\services\java.sql.Driver

com.mysql.cj.jdbc.Driver

这个配置文件的存在和文件内容决定了jar 包在类路径里,程序运行扫描类路径时就会加载并实例化这个 Class 的实例。

对于连接其他数据库,比如 MS SQL Server、Oracle 的时候,就不一定有上面提到的配置,就还是要有:

Class.forName("com.mysql.cj.jdbc.Driver");

这一行代码

https://github.com/jihch/jdbc/blob/main/src/main/java/io/github/jihch/connection/ConnectionTest4.java