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>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM