更换mysql-connector-java-6.0.5jar包后程序出现的两个异常及解决方法

异常一: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.

异常二: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.

下面是我的程序代码:

配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_daily_management
username=root
password=123456

数据库连接工具类

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtils {
    
    private static Properties config = new Properties();
    static{
        try {
            config.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));
            Class.forName(config.getProperty("driver"));
        } catch (Exception e) {
            throw new ExceptionInInitializerError(e);
        }
    }

    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection(config.getProperty("url"), config.getProperty("username"), config.getProperty("password"));
    }
    
    
    public static void release(Connection conn,java.sql.PreparedStatement stmt,ResultSet rs){
        
        if(rs!=null){
            try{
                rs.close();   //throw new 
            }catch (Exception e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if(stmt!=null){
            try{
                stmt.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        if(conn!=null){
            try{
                conn.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        
    }
}    

测试类

 

package test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import utils.JdbcUtils;

public class JdbcTest {
    @Test
    public void testJdbc(){
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        String sql = "select count(*) from tb_employee";
        try {
            conn = JdbcUtils.getConnection();
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            if(rs.next()){
                System.out.println(rs.getInt(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, pst, rs);
        }
    }
}

 

 

 

第一个异常是因为mysql-connection-java的最新版本不建议使用“com.mysql.jdbc” 包下面的“Driver”,改正方法直接把配置文件中的“com.mysql.jdbc.Driver”改为在异常中提示的“com.mysql.cj.jdbc.Driver”。

 

第二个异常显示新版本的数据库连接程序需要指定UTC时区,改正方法将配置文件中的“url”后面加上指定的时区,将其值改为“url=jdbc:mysql://localhost:3306/db_daily_management&serverTimezone=GMT”

posted on 2016-10-30 20:17 破邪顕正 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/demoncirno/p/6013905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值