mysql8.0 connector JAR包的下载位置及JDBC配置
下载地址在
https://dev.mysql.com/downloads/connector/j
说明文档在这里
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-basic.html
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.cj.jdbc.*
// or you will have problems!
public class LoadDriver {
public static void main(String[] args) {
try {
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName(;com.mysql.cj.jdbc.Driver;).newInstance();
} catch (Exception ex) {
// handle the error
}
}
}
====================
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
Connection conn = null;
...
try {
conn =
DriverManager.getConnection(;jdbc:mysql://localhost/test?; ;
;user=minty&password=greatsqldb;);
// Do something with the Connection
...
} catch (SQLException ex) {
// handle any errors
System.out.println(;SQLException: ; ; ex.getMessage());
System.out.println(;SQLState: ; ; ex.getSQLState());
System.out.println(;VendorError: ; ; ex.getErrorCode());
}
======================================
需要选择操作系统(Select Operating System)
Mysql 8.0 的JDBC配置有所变化
Class.forName(;com.mysql.cj.jdbc.Driver;);
Connection conn = DriverManager.getConnection(;jdbc:mysql://localhost:3306/db3?serverTimezone=UTC;, ;root;, ;密码;);
String sql = ;insert into student values(;zhangsan;, 1356897824);;
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
System.out.println(count);
stmt.close();
conn.close();
变化主要在两点, 分别是Class.forName(;com.mysql.cj.jdbc.Driver;), 以及获得连接的URL配置DriverManager.getConnection(;jdbc:mysql://localhost:3306/db3?serverTimezone=UTC;, ;root;, ;密码;);
;jdbc:mysql://localhost:3306/db3?serverTimezone=UTC; 这句话必须设置, 但是设置UTC时间(世界统一时间), 会比北京时间早8个小时, 也就是说;北京2020年3月20日18点的时候;UTC时间为2020年3月20日10点.
如果你用编译器连接数据库;定义了serverTimezone=UTC;那么在你编译器上执行的SQL语句;会先以UTC时区进行存储;发送到MySQL,然后MySQL以本地时区进行转换;就会导致;执行时间比从编译器上的执行时间早8个小时;导致;同一段SQL语句;在mysql直接执行;与编译器执行;结果不同;因为时间相差8个小时
serverTimezone=UTC