JDBC的URL=协议名+子协议名+数据源名。
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称; port:端口号,默认3306
1.旧版本,MySQL Connector/J 5.x 版本的连接方式:
url = jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
driver = com.mysql.jdbc.Driver
2、MySQL 8.x新版本,MySQL Connector/J 6.x之后 的连接方式:
url = jdbc:mysql://localhost:3306/user?serverTimezone=UTC&characterEncoding=utf-8&useUnicode=true&useSSL=false
drive = com.mysql.cj.jdbc.Driver
注意:新版mysql驱动的url必须设置时区,即serverTimezone=UTC
useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为utf-8,本参数值必须设置为true
serverTimezone=UTC 设置数据库时区为统一标准标准世界时间
useSSL 是否进行SSL连接高版本设置useSSL=true,不然会有警告信息
常见错误提示1:
以上配置中,url中如果driver没有添加cj,则会在连接的时候出现以下错误提示:
Loading class com.mysql.jdbc.Driver’. This is deprecated. The new
driver class is com.mysql.cj.jdbc.Driver’. The driver is automatically
registered via the SPI and manual loading of the driver class is
generally unnecessary.
根据提示,很显然,这种driver配置方式在此版本中已经被废弃,因此需要将driverClass配置为:com.mysql.cj.jdbc.Driver。
常见错误提示2:
以上配置中,url中如果没有设置useSSL=false,则会在连接的时候出现以下错误提示:
1 WARN: Establishing SSL connection without server’s identity
verification is not recommended. According to MySQL 5.5.45+, 5.6.26+
and 5.7.6+ requirements SSL connection must be established by default
if explicit option isn’t set. For compliance with existing
applications not using SSL the verifyServerCertificate property is set
to ‘false’.You need either to explicitly disable SSL by setting
useSSL=false, or set useSSL=true and provide truststore for server
certificate verification.
常见错误提示3:
以上配置中,url中如果没有设置serverTimezone=UTC,则会在连接的时候出现以下错误提示:
The server time zone value ‘???ú±ê×??±??’ is unrecognized or
represents more than one time zone. You must configure either the
server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value if you want to utilize time zone
support.
代码:
package utils;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtils {
public final static String DRIVER="com.mysql.jdbc.Driver";
public final static String URL="jdbc:mysql://localhost:3306/shujukuDB?useUnicode=true&characterEncoding=utf-8";
public final static String USER="";
public final static String PASSWORD="";
public static Connection getConnection(){
Connection conn=null;
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USER,PASSWORD);
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
public static void closeDB(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
DBUtils.getConnection();
}
}