异常一: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
异常二: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.mysql
下面是个人程序代码:sql
配置文件:数据库
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”。
url
第二个异常显示新版本的数据库链接程序须要指定UTC时区,改正方法将配置文件中的“url”后面加上指定的时区,将其值改成“url=jdbc:mysql://localhost:3306/db_daily_management&serverTimezone=GMT”spa