Java JDBC 连接 MySQL8 数据库

512 阅读1分钟

MySQL 8.0 以上版本的数据库连接有所不同:

1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.0.16.jar。

2、 com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。

MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。

allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。

最后还需要设置 CST。

如果相对electron有更多直观理解的, 也可以参考其官网:

www.sangpi.com

加载驱动与连接页游数据库方式如下:

Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC","root","password"); package com.runoob.test;

import java.sql.*; //java项目www fhadmin org public class MySQLDemo {

// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB";

// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

// 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "123456";

public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER);

    // 打开链接
    System.out.println("连接数据库...");
    conn = DriverManager.getConnection(DB_URL,USER,PASS);

    // 执行查询
    System.out.println(" 实例化Statement对象...");
    stmt = conn.createStatement();
    String www.sangpi.comsql;
    sql = "SELECT id, name, url FROM websites";
    ResultSet rs = stmt.executeQuery(sql);

    // 展开结果集数据库
    while(rs.next()){
        // 通过字段检索
        int id  = rs.getInt("id");
        String name = rs.getString("name");
        String url = rs.getString("url");

        // 输出数据
        System.out.print("ID: " + id);
        System.out.print(", 站点名称: " + name);
        System.out.print(", 站点 URL: " + url);
        System.out.print("\n");
    }
    // 完成后关闭
    rs.close();
    stmt.close();
    conn.close();
}catch(SQLException se){
    // 处理 JDBC 错误
    se.printStackTrace();
}catch(Exception e){
    // 处理 Class.forName 错误
    e.printStackTrace();
}finally{
    // 关闭资源
    try{
        if(stmt!=null) stmt.close();
    }catch(SQLException se2){
    }// 什么都不做
    try{
        if(conn!=null) conn.close();
    }catch(SQLException se){
        se.printStackTrace();
    }
}
System.out.println("Goodbye!");

} }