此问题已经在这里有了答案:
package com.practise;
import java.sql.*;
public class connectSQL {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "Root!123321");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from testTable");
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
con.close();
}
}catch(Exception e){
System.out.println("We got an exception...");
System.out.println(e.getMessage());
}
}
}
输出:
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.
We got an exception...
The server time zone value 'EEST' 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.
看起来像是由a引起的警告消息
Class.forName("com.mysql.jdbc.Driver")
调用。您的代码继续运行,因为它只是一个警告。
主要是告诉您驱动程序类的名称已更改为com.mysql.cj.jdbc.Driver。因此,请使用:
Class.forName("com.mysql.cj.jdbc.Driver")
这也让您知道,从Java 6(JDBC 4.0)开始,通常不必使用Class.forName手动加载驱动程序类,因为JDBC现在能够加载正确的驱动程序本身(假设驱动程序jar文件在类路径上可用。
其他人已经回答了您。您必须使用新的驱动程序语法。
Class.forName("com.mysql.cj.jdbc.Driver");
MySQL驱动程序.jar文件必须在您的CLASSPATH中。
此外,您还需要配置mysql服务器,以避免时区异常。您可以在服务器中手动设置UTC时区,也可以在jdbc网址中使用它。
jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC