java连接mysql8与mysql5.7以下的区别

2021-06-15 10:48:24 浏览数 (1)

前言:

手上的服务器还在吃灰,决定安装mysql,当做一个云数据库好啦。 安装之后就要拿来用了,发现8和之前的版本有大大的区别

java项目中连接mysql8

  1. 首先驱动变了 原来是com.mysql.jdbc.Driver换成了com.mysql.cj.jdbc.Driver
  2. 其次mysql8是不需要建立ssl连接的,你需要显示关闭。还需要设置CST jdbc:mysql://localhost:3306/sql?useSSL=false&serverTimezone=GMT&useUnicode=true&characterEncoding=UTF8

mysql8其他问题

  1. 安装时不能选择默认加密方式,不然会造成Navicat连不上

mysql8下载及jdbc8下载地址

https://dev.mysql.com/downloads/windows/installer/8.0.html https://dev.mysql.com/downloads/connector/

放一个完整的java连接mysql8代码

代码语言:javascript复制
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
    //mysql数据库驱动,固定写法。连接Oracle时又与之不同,为:"oracle.jdbc.driver.OracleDriver"  
    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    /** 
    * 如下是连接数据库的URL地址, 
    * 其中,"jdbc:mysql://"   为固定写法 
    * "localhost"是连接本机数据库时的写法,当不是连接本机数据库时,要写数据库所在计算机的IP地址。如:1.1.1.1 
    * "sql"是数据库的名称,一定要根据自己的数据库更改。
    * "useSSL=false&serverTimezone=GMT"为mysql8需要加上的 
    * "?useUnicode=true&characterEncoding=UTF-8" 指定编码格式,无需时可省略, 
    * 即地址直接为:"jdbc:mysql://localhost:3306/shopping" 
    */ 
    public static final String URL = "jdbc:mysql://localhost:3306/sql?useSSL=false&serverTimezone=GMT&useUnicode=true&characterEncoding=UTF8";
    //数据库的用户名、密码 
    public static final String NAME = "name";
    public static final String PAWD = "pawd";

    //返回数据库连接对象,供外部调用  
    public static Connection getConn() {
        //声明数据库连接对象          
        Connection conn = null;
        try {
            //加载驱动 
            Class.forName(DRIVER);
            //连接数据库 
            conn = DriverManager.getConnection(URL, NAME, PAWD);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    // 关闭资源.一定要关闭资源(写在调用数据库后的finally中)
    // 即使前面抛出异常,程序中断,也会执行关闭资源,而不影响浪费。 
    // 数据库的每一个连接都占据服务器资源。我们写代码的时候感觉不到,   
    // 但是一旦服务器运行个三五天,连接就会不断地增加,最终导致资源不足,  
    // 服务器将自动关机来强行关闭连接。   
    // 而且这里面,全部过程都不要抛出异常,而是要捕捉处理异常,不然也会导致资源浪费。  
    public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {

        try {
            // 这里最好要先判断是否为空,不为空了,才去关闭。   
            // 而且要从小到大的关闭(rs,ps,conn),顺序不能乱 
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) { //注意:如果后续还要使用connection,则不用关闭 
                conn.close();
            }    
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

0 人点赞