怎么在IDEA2020.2中写JAVA代码,用JDBC连接Mysql8.0数据库呢?
首先先说一下哈,连接个数据库我搜了好多好多的博客文档啥的,去mysql的官网的文档也瞄了,但最终的结果就是,一行一行报错,解决一行就立马报错下一行,然后我人就傻了
好不容易学会怎么搞,然后我就来发这个博文了
这不是Javaweb项目啊,就普通的Java项目
先准备一些东西吧
第一步就是下载jar包
我在一开始确定要搞JDBC的时候就傻了吧唧地下载了好多好多的jar包
如果想要下载jar包,可以在这个网站上下载:
在这里下载jar包
在要不就去mysql官网上下载啦
点这个进去下载
下面是官网下载的步骤:
如果就这么直接下就是下载的8.0.23
download应该是啥意思就不用说了吧,tar或者zip都行
如果想下载历史版本呢,不要那个8.0.23,就选择这个
然后就可以开心地等待下载完毕啦
我先前下载了一个8.0.21的版本jar包,理论上应该是没什么问题的,然后我连接了一下我的数据库
惊喜的发现我的数据库版本是8.0.22
然后强迫症使我感觉必须要一一对应,所以我就只搞了个8.0.22的jar包
然后感觉心情都好了
第二步搞一个数据库
用navicat创建了一个 test 的 数据库
然后又创建了一个名为try的表
随便给点数据好吧
然后把你下载好的jar文件准备好
就只要这个玩意,你先把它撸到桌面上或者你自己熟悉的哪个文件夹下,
我是放在H盘下的一个jar文件夹下了
好了,以上就是准备工作,已经完成了
接下来开始利用IDEA写Java代码连接数据库了
新建项目,这个应该还是会吧!
然后finish
创建java类
接着,就把那个jar包搞进来
选择项目结构
选择模块
在这里选择依赖
然后戳那个+号,选择jars或目录
然后把那个jar包导进来
当你发现这里有那个jar包之后就说明差不多了
好,接下来就开始写代码了!!!
- 先需要加载驱动:
我们这是用的mysql8.0所以是"com.mysql.cj.jdbc.Driver"不是"com.mysql.jdbc.Driver"
Class.forName("com.mysql.cj.jdbc.Driver");
-
接下来就是获得数据库连接
url是这样写的
String url1 = "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
String url2 = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
以上两个都行
模板是: jdbc:mysql://本机地址:数据库的端口号(默认是3306)/数据库名
在这里我得说一句,我之前认为的数据库名是MYSQL安装时候定的名字,其实不是,是指的是之前在创建数据库的时候的名字,也就是之前的地方我加粗了的那个
useSSL=false 是指不使用SSL加密
useUnicode=true&characterEncoding=utf-8 是指设置编码格式为utf-8
serverTimezone=Asia/Shanghai 是设置时区,有时候不设置它给你报错
用Connection来接收这个参数
username是自己连接数据库的用户名
password是连接时用的密码
这两个都是字符串
Connection connection = DriverManager.getConnection(url,username,password);
- 然后就开始写sql语句了
sql语句也是字符串
PreparedStatement statement = connection.prepareStatement("select * from try");
- 查询
查询完后会返回一个结果集,然后遍历这个结果集
ResultSet resultSet = statement.executeQuery();
- 遍历
while (resultSet.next()){
System.out.println("id:"+resultSet.getInt("id"));
System.out.println("name:"+resultSet.getString("name"));
System.out.println("sex:"+resultSet.getString("sex"));
}
- 释放资源
反着释放资源
resultSet.close();
statement.close();
connection.close();
以上是大致流程,以下是java整个的源码
包括了try catch等
package com.okok;
import java.sql.*;
public class TestJDBC {
public static void main(String[] args) {
String url1 = "jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
String url2 = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//username和密码别和我写一样的啊
connection = DriverManager.getConnection(url2,"username","password");
statement = connection.prepareStatement("select * from try");
resultSet = statement.executeQuery();
while (resultSet.next()){
System.out.println("id:"+resultSet.getInt("id"));
System.out.println("name:"+resultSet.getString("name"));
System.out.println("sex:"+resultSet.getString("sex"));
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
if(null!=resultSet){
try {
resultSet.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
if(null!=statement){
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
if(null!=connection){
try {
connection.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}
}