学习JDBC遇到的一些问题

1. 数据库版本与驱动对应问题

参考官方文档:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html

具体详情还需查看官方文档。

Connector/J version JDBC version MySQL Server version JRE Supported JDK Required for Compilation Status
8.0 4.2 5.6, 5.7, 8.0 1.8.x 1.8.x General availability. Recommended version.
5.1 3.0, 4.0, 4.1, 4.2 5.6*, 5.7*, 8.0* 1.5.x, 1.6.x, 1.7.x, 1.8.x* 1.5.x and 1.8.x General availability

注意:如果数据库版本与驱动不一致则会报java.sql.SQLNonTransientConnectionException异常。

另附大佬博文:https://blog.csdn.net/jungle_rao/article/details/81274720

2. 高版本(MySQL 8.0 以上版本)驱动加载写法区别与一些必须设置的参数

  • com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver
  • MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。
  • 最后还需要设置 CST(时区)。

大佬示例:

Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");

补充:在 JDBC4.0 之前,连接数据库的时候,通常会用 Class.forName(“com.mysql.jdbc.Driver”)
这句先加载数据库相关的驱动,然后再进行获取连接等的操作。而 JDBC4.0 之后不需要 Class.forName
来加载驱动,直接获取连接即可,这里使用了 Java 的SPI扩展机制来实现。
附:https://www.jianshu.com/p/46b42f7f593c

另附一篇关于时区的博文:https://www.jianshu.com/p/735e8444cdda
大神教程:https://www.runoob.com/java/java-mysql-connect.html

posted @ 2019-12-02 16:55  超级小白龙  阅读(225)  评论(0编辑  收藏  举报