前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java连接mysql8与mysql5.7以下的区别

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

作者头像
wo.
发布2021-06-15 10:48:24
2.3K0
发布2021-06-15 10:48:24
举报
文章被收录于专栏:了不得的专栏

前言:

手上的服务器还在吃灰,决定安装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();
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
    • java项目中连接mysql8
      • mysql8其他问题
        • mysql8下载及jdbc8下载地址
          • 放一个完整的java连接mysql8代码
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档