前言
本来做登录模块,结果一直显示不出来到servlet那里就空白,就觉得肯定是代码问题,之后仔细检查从bean、到servlet,也没有找出错误。就逐行检查,每各几句就显示一次,就发现连接数据库出现了问题。
Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/sa”,“root”,“123456”);
这句话运行不成功。然后直接java运行查看结果,报错:
java.sql.SQLException: 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.
可以肯定是时区问题
在访问数据库时url需要加上这一句:
useSSL=false&serverTimezone=UTC
即
jdbc:mysql://localhost:3306/sa?&useSSL=false&serverTimezone=UTC
附上测试代码:
import java.sql.*;
import static java.sql.DriverManager.getConnection;
public class ces {
public static void main(String[] args) {
//加载驱动类
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//Class.forName("com.mysql.jdbc.Driver");
Connection conn = getConnection("jdbc:mysql://localhost:3306/sa?&useSSL=false&serverTimezone=UTC", "root", "123456");
//sa代表的是数据库,root代表的是数据库的用户名,123456代表数据的密码,请自己注意修改
Statement sql=conn.createStatement();
ResultSet rs;
rs=sql.executeQuery("select * from user");//user代表的是表,请注意修改
while (rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}