首先是JDBC驱动版本的问题
1、JDBC连接Mysql5需用com.mysql.jdbc.Driver,例如:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=root
2、JDBC连接Mysql6需用com.mysql.cj.jdbc.Driver,同时需要指定时区serverTimezone,例如:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=root
3、设定时区时,serverTimezone=UTC比中国时间早8个小时,若在中国,可设置serverTimezone=Shanghai或者serverTimezone=Hongkong,例如:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=root
4、如果mysql-connector-java用的6.0以上的,如:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
但是你的driver用的还是com.mysql.jdbc.Driver就会报错,此时需要把com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver。
------------------------------------------------------------------------------------------
例
import java.sql.*;
public class JdbcTest2 {
static final String JDBC_DRIVER="com.mysql.cj.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
// Database credentials -- 数据库名和密码自己修改
static final String USER = "root";
static final String PASS = "root";
public static void main(String[] args) {
Connection conn=null;
Statement stmt=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("Connecting to database...");
conn=DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Creating statement...");
stmt=conn.createStatement();
String sql;
sql="SELECT * FROM stu";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {
int id=rs.getInt("sid");
String name=rs.getString("name");
System.out.print("ID: " + id);
System.out.print("name: " + name);
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(SQLException se) {
se.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(stmt!=null) {
stmt.close();
}
}catch(SQLException se2) {
se2.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}
}catch(SQLException se1) {
se1.printStackTrace();
}
}
}
}
二、URL解析的问题
我用的是mysql-connector-java为8.0版本
URL应该写为DB_URL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8