更換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”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM