关于Mysql 8.0及以上jdbc
MYSQL8.0以前的jdbc格式
//注册驱动
Class. forName ("com.mysq1. jdbc. Driver") ;
//获取数据库连接对象
Connection conn = Drive rManager . getConnection ("jdbc:mysql:/ / localhost: 3306/database", "root", password) ;
/获取执行sq1的对象statement
Statement stmt = conn. createStatement() ;
8.0后新的改变
1.在博主用MYSQL8.0以前的语法用8.0后版本进行jdbc时,会报如下的错:
解决办法
代码实现如下:
1.Class.forName(“com.mysql.cj.jdbc.Driver”);//8版本以前的版本中不用带.cj
//注册驱动
2.Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/database”);
//获取数据库链接对象,在获取链接对象的时候,会产生对应的错误:
(1)
这是注册驱动时对应版本不一样,将cj加上即可
(2) 错误2:Sat Jun 02 11:40:45 CST 2018 WARN:建议不建立服务器身份验证的SSL连接
根据MySQL 5.5.45 +,5.6.26 +和5.7.6+的要求,如果未设置显式选项,则必须默认建立SSL连接
为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为'false'
您需要通过设置useSSL = false显式禁用SSL,或者设置useSSL = true并且为服务器证书验证提供信任。
这是一个警告 ,即在原来的数据库名称后面添加:?useUnicode=true&characterEncoding=utf-8&useSSL=false;
(3)
java.sql.SQLException中:服务器时区值'??? EE×??±??'。
无法识别或代表多个时区如果要利用时区支持,则必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更具体的时区值。
修改方法:&serverTimezone = GMT“
修改后(简写~):
DriverManager.getConnection("jdbc:mysql://localhost:3306/users?useSSL=false&serverTimezone=GMT","root","123");
运行结果: