主要是jar包和数据库的创建
进去后是当前最新版本的,此处一定要选你机子上相匹配的连接包,比如我的是8.0.24
进去后,下拉选择需要的版本和以及下拉选择Platform Independent
然后tar和zip选择下载都可以,我选择的是zip
下载完成解压后,里面的一个jar包就是我们等会需要用到的
会创建数据库就行,用什么工具创建不重要。比如我是用的Navicat创建,如下:
至此准备工作已经完成,接下来开始用IDEA连接MySQL8.0数据库
2、继续点下一步,直到创建名字(我创建的是JDBCTest01),然后点击finish
(在刚创建的JDBC_Pack包中鼠标右击创建Java类,我取名为JDBC_Test)
1. 第一步:注册驱动
//1、注册驱动_第一种方法
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
//注意:如果是MySQL8.0以下,驱动地址为:com.mysql.jdbc.Driver()
//1、注册驱动_第二种方法
Class.forName("com.mysql.cj.jdbc.Driver");
//MySQL8.0以下为:com.mysql.jdbc.Driver()
2.第二步:获取连接
//2、获取连接
String url = "jdbc:mysql://127.0.0.1:3306/test01";
String user = "root";//MySQL用户名
String password = "2233";//MySQL登录密码,自己设置
connection = DriverManager.getConnection(url,user,password);/*url是统一资源定位符,如某个网址绝对路径,包括协议、IP地址、端口名、资源名*/
//前面四行也可以直接用一行代替:connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01","root","2233");
注:
jdbc:mysql是通信协议,好比http;
localhost是本机IP地址即127.0.0.1,如果要连接其他计算机,则可将此改为要连接的计算机的IP地址;
3306是端口名,如果有更改,则填更改后的;
test01是要连接的数据库名字,自己定义的;
//有些时候可能会报错,那是MySQL8.0的时区问题,url改成如下就行:
url = “jdbc:mysql://127.0.0.1:3306/test01?useSSL=false&serverTimezone=UTC”;
3、获取数据库操作对象
//3、获取数据库操作对象
statement = connection.createStatement();
4、执行SQL语句
插入语句
String sql1 = "insert into student values(1005,'小高','男')";//执行SQL插入语句
statement.executeUpdate(sql1);//两行可以写在一起
删除语句
statement.executeUpdate("delete from student where 学号 = 1002");//执行SQL删除语句
更新语句
statement.executeUpdate("update student set 学号 = 1007, 姓名 = '更新' where 学号 = 1003");//执行SQL更新语句
6、释放资源
如果没有执行SQL的select语句,就可以进行最后一步释放资源。
try {//先释放statement
if (statement != null) {
statement.close();
}
}catch (SQLException e){
e.printStackTrace();
}
try {//最后释放connection
if (connection != null){
connection.close();
}
}catch (SQLException e){
e.printStackTrace();
}
5、处理查询结果集
这一步是用对select语句查询的结果集用的,即用来处理DQL执行的结果
String sql = "select * from student where 性别 = '男'";//注意属性这要用单引号
resultSet = statement.executeQuery(sql);//resultSet即是我们select查询的一个结果集,接下来需要将其输出
遍历结果集
while (resultSet.next()){//next(),在移动到有数据时返回结果为boolean型true,没有数据则为false;
String 学号 = resultSet.getString("学号");//参数可以是属性名
String 姓名 = resultSet.getString(2);//也可以是第几列,从1开始
String 性别 = resultSet.getString("性别");
System.out.println(学号+" "+姓名+" "+性别);
}
6、然后释放资源
try {//先释放resultSet
if (resultSet != null) {
resultSet.close();
}
}catch (SQLException e){
e.printStackTrace();
}
同一增删改语句不能多次执行,所以我用了一次就注释了,注意看清
package JDBC_Pack;
import java.sql.*;//相关包全部导入
public class JDBC_Test {
public static void main(String[] args) {
Connection connection = null;//获取数据库连接
Statement statement = null;//用来执行SQL语句
ResultSet resultSet = null;//处理查询结果集即执行select语句用的
//这三个需要放到try外面,因为后面需要释放他们即释放资源
try{
//1、注册驱动_第一种方法
//Driver driver = new com.mysql.cj.jdbc.Driver();
//DriverManager.registerDriver(driver);
//1、注册驱动_第二种方法
Class.forName("com.mysql.cj.jdbc.Driver");
//MySQL8.0以下版本的是com.mysql.jdbc.Driver
//2、获取连接
String url = "jdbc:mysql://127.0.0.1:3306/test01";/*jdbc:mysql是通信协议,好比http;
localhost是本机IP地址即127.0.0.1,如果要连接其他计算机,则可将此改为要连接的计算机的IP地址;
3306是端口名,如果有更改,则填更改后的;test01是要连接的数据库名字,自己定义的;*/
//有可能会报错,那是MySQL8.0的时区问题,url改成如下就行:url = "jdbc:mysql://127.0.0.1:3306/test01?useSSL=false&serverTimezone=UTC";
String user = "root";//MySQL用户名
String password = "2233";//MySQL登录密码,自己设置
connection = DriverManager.getConnection(url,user,password);/*url是统一资源定位符,如某个网址绝对路径,包括协议、IP地址、端口名、资源名*/
//前面四行也可以直接用一行代替:connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01","root","2233");
//3、获取数据库操作对象
statement = connection.createStatement();
//4、执行SQL语句
//String sql1 = "insert into student values(1005,'小高','男')";//执行SQL插入语句
//statement.executeUpdate(sql1);//两行可以写在一起
//statement.executeUpdate("delete from student where 学号 = 1002");//执行SQL删除语句
//statement.executeUpdate("update student set 学号 = 1007, 姓名 = '更新' where 学号 = 1003");//执行SQL更新语句
//5、处理查询结果集,用来处理DQL执行的结果
String sql = "select * from student where 性别 = '男'";//注意属性这要用单引号
resultSet = statement.executeQuery(sql);//resultSet即是我们select查询的一个结果集,接下来需要将其输出
while (resultSet.next()){//next(),在移动到有数据时返回结果为boolean型true,没有数据则为false;
String 学号 = resultSet.getString("学号");//参数可以是属性名
String 姓名 = resultSet.getString(2);//也可以是第几列,从1开始
String 性别 = resultSet.getString("性别");
System.out.println(学号+" "+姓名+" "+性别);
}
}catch (SQLException | ClassNotFoundException e){
e.printStackTrace();
}finally {
//6、释放资源:遵循从小到大依次关闭
try {//先释放resultSet
if (resultSet != null) {
resultSet.close();
}
}catch (SQLException e){
e.printStackTrace();
}
try {//再释放statement
if (statement != null) {
statement.close();
}
}catch (SQLException e){
e.printStackTrace();
}
try {//最后释放connection
if (connection != null){
connection.close();
}
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
最后说明:
我也是新手,我折腾了好久才可以自己用Java随意连接数据库以及连接别人电脑上的MySQL数据库,中间遇到了N次报错,不过也慢慢的才了解了点原理。当然肯定还有很多比较不足之处,还望大家多多指正。
也祝愿大家都能成功实现自己想要的功能