“获取数据库连接的方式四”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“https://www.bilibili.com/video/BV1eJ411c7rf?p=10”的新页面) |
Jihongchang(讨论 | 贡献) (→但) |
||
| (未显示同一用户的4个中间版本) | |||
| 第1行: | 第1行: | ||
https://www.bilibili.com/video/BV1eJ411c7rf?p=10 | https://www.bilibili.com/video/BV1eJ411c7rf?p=10 | ||
| + | |||
| + | 额,这个说的原来就是我在前面的示例里发现的:<syntaxhighlight lang="java"> | ||
| + | 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); | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | </syntaxhighlight><syntaxhighlight lang="console"> | ||
| + | com.mysql.cj.jdbc.ConnectionImpl@4278a03f | ||
| + | </syntaxhighlight>相较于方式三,省略了:<syntaxhighlight lang="java"> | ||
| + | Driver driver = (Driver) clazz.newInstance(); | ||
| + | DriverManager.registerDriver(driver); | ||
| + | </syntaxhighlight>注册驱动的实现已经在 第三方的驱动包里自己实现了,所以就只要通过类名加载类实例就可以 | ||
| + | |||
| + | === 其实 === | ||
| + | 对于使用 连接 MySQL Server 数据库的 mysql-connector-java-x.x.jar 的驱动包来说,这行代码:<syntaxhighlight lang="java"> | ||
| + | Class.forName("com.mysql.cj.jdbc.Driver"); | ||
| + | </syntaxhighlight>也是可以省略的,因为在 mysql-connector-java-x.x.x.jar 的驱动包下提供了配置文件:\META-INF\services\java.sql.Driver <syntaxhighlight lang="console"> | ||
| + | com.mysql.cj.jdbc.Driver | ||
| + | </syntaxhighlight>这个配置文件的存在和文件内容决定了jar 包在类路径里,程序运行扫描类路径时就会加载并实例化这个 Class 的实例。 | ||
| + | |||
| + | === 但 === | ||
| + | 对于连接其他数据库,比如 MS SQL Server、Oracle 的时候,就不一定有上面提到的配置,就还是要有:<syntaxhighlight lang="java"> | ||
| + | Class.forName("com.mysql.cj.jdbc.Driver"); | ||
| + | </syntaxhighlight>这一行代码 | ||
| + | |||
| + | https://github.com/jihch/jdbc/blob/main/src/main/java/io/github/jihch/connection/ConnectionTest4.java | ||
2022年12月14日 (三) 14:43的最新版本
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");
这一行代码