JDBC与java8.0以上连接时区错误解决方法
在我们连接数据库与java的时候,会出现一些我们意想不到的难以解决的问题,这是很正常的事,下面就介绍一个问题:
No suitable driver found for jdbc:mysql://localhost:3306/test:找不到适用于jdbc:mysql:// localhost:3306 / test的驱动程序
这个需要我们设置一下我们的连接的数据库的问题\
public static final String URL = “jdbc:mysql://localhost:3306/products”;
public static final String USER = “root”;
public static final String PASSWORD = “147852”;
public static void main(String[] args) throws Exception {
//加载数据库驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
//操作数据库,实现增删改查
Statement stam = conn.createStatement();
ResultSet rs = stam.executeQuery("SELECT productName,productCount FROM productplan");
//如果有数据,rs.next()返回true
while (rs.next()) {
System.out.println(rs.getString("productName") +
" 数量:" + rs.getInt("productCount")
);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
我们需要将点号改为冒号“:”在数据库名的后面加上“?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC” 这句话
大家可以看到这句话的意思,用户编码是否为真、字符编码设置为utf-8、时区为UTC
这样就不会再出现问题了,当然8.0以上版本可能还会有需要加上“.cj.”的问题
以上就是此问题的解决方法了,
还有一个更简单的方法
就是在数据库的加上几句编码,直接修改设置时区,就不用再在代码中添加一长串的代码了,当然只是针对时区的问题,如果有另外两个错误还是得加上另外两个
方法
1、show variables like “%time_zone%”;
2、set global time_zone = ‘+8:00’;
3、set time_zone = ‘+8:00’;
4、flush privileges;