8.0版本以上的MySQL使用JDBC连接IDEA
如果你不小心下载MySQL版本超过了8.0又不想更改,看这篇文章教你如何使用JDBC连接MySQL
如果此时你不确定你的MySQL的版本,win+r 打开cmd,在cmd中登录你的MySQL就会显示你的MySQL版本
然后我们需要下载驱动包,最新版下载地址为:最新下载地址,解压后得到 jar 库文件。
在IEDA项目中创建一个文件夹叫lib
然后把 jar 库文件放入文件夹下
然后右键lib目录 选择添加为库(Add as Library)==这才是真正导入jar包 ==
Class.forName("com.mysql.cj.jdbc.Driver");
进行注册驱动8.0版本为com.mysql.cj.jdbc.Driver
低于8.0版本则是com.mysql.jdbc.Driver
接下来就是区别最大的地方URL
低于8.0版本的URL是这样的"jdbc:mysql://localhost:3306/+你要连接的数据库
而8.0版本以上的是这样的"jdbc:mysql://localhost:3306/+你要连接的数据库?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"
MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。所有对应的是useSSL=false
allowPublicKeyRetrieval=true
允许客户端从服务器获取公钥。
最后还得设置CST serverTimezone=UTC
之后就一模一样了
其中这个localhost表示你的主机名字 也可以用127.0.0.1来表示 ,如果要连接linux下的数据库时,则用linux主机的ip
示例
package day02_02;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.Statement;
public class MysqlDemo {
public static void main(String[] args) throws Exception { //下面方法有不同的异常,我直接抛出一个大的异常
//1、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2、获取数据库的连接对象 test_db是我要连接的数据库名字,这里换成你的
String url = "jdbc:mysql://127.0.0.1:3306/test_db?" +
"useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,username,password);
//3.定义sql语句
String sql = "SELECT * FROM mock_data";
//4.获取执行sql语句的对象
Statement stmt = conn.createStatement();
//5.执行sql语句
ResultSet rs = stmt.executeQuery(sql);
//6.处理结果集
while(rs.next()) {
System.out.println(rs.getString("id")+" "+rs.getString("first_name") );
}
//7.释放资源
rs.close();
stmt.close();
conn.close();
}
}