MySql驱动jdbc连接时区问题

当jdbc驱动版本为8.0+时不设置时区会报错

  • 修改url连接
    String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=GMT%2B8";

或者
String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=Asia/Shanghai";

  • 防止乱码
String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=GMT%2B8&characterEncoding=utf8";
  • 远程数据库连接
String url = "jdbc:mysql://xxx.xxx.xx.xx:3306/javaweb?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&useUnicode=true";

获取连接

Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/javaweb?serverTimezone=GMT%2B8";
        String username = "root";
        String password = "root";
        Connection con = DriverManager.getConnection(url,username,password);
        System.out.println(con);

执行增删改语句

        String sql = "insert into t_user values (?,?,?,?)";
        PreparedStatement pre = conn.prepareStatement(sql);
        pre.setInt(1,user.getUid());
        pre.setString(2,user.getName());
        pre.setInt(3,user.getAge());
        pre.setString(4,user.getPhone());
        //ResultSet resultSet = pre.executeQuery();
        int i = pre.executeUpdate();
        System.out.println(i);

执行查询语句

        String select = "select * from t_user;";
        PreparedStatement pre = conn.prepareStatement(select);
        ResultSet res = pre.executeQuery();
        List<User> list = new ArrayList<>();
        while (res.next()) {
            User user = new User();
            user.setUid(res.getInt("uid"));
            user.setName(res.getString("name"));
            user.setAge(res.getInt("age"));
            user.setPhone(res.getString("phone"));
            list.add(user);
        }

驱动下载地址

https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.26/

maven

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
posted @ 2021-09-10 09:40  永恒变量  阅读(856)  评论(0)    收藏  举报