主要是jar包和数据库的创建
进去后是当前最新版本的,此处一定要选你机子上相匹配的连接包,比如我的是8.0.24
进去后,下拉选择需要的版本和以及下拉选择Platform Independent
然后tar和zip选择下载都可以,我选择的是zip
下载完成解压后,里面的一个jar包就是我们等会需要用到的
会创建数据库就行,用什么工具创建不重要。比如我是用的Navicat创建,如下:
创建了名为Test01 的数据库
创建了有三个属性的student表
然后添加了四条记录
至此准备工作已经完成,接下来开始用IDEA连接MySQL8.0数据库
1、打开idea,创建项目
2、继续点下一步,直到创建名字(我创建的是JDBCTest01),然后点击finish
然后在src鼠标右击创建包(这一步不是必须的):
我创建了名为JDBC_Pack的包
然后是创建个Java类
(在刚创建的JDBC_Pack包中鼠标右击创建Java类,我取名为JDBC_Test)
选择项目结构(Project Structure)
选择模块(Modules)
选择依赖(Dependencies)
点击加号+,选择JARs
找到之前准备好的jar包,然后点击OK
记得打勾勾
完成之后左边就会有个包,说明成功了
1. 第一步:注册驱动
//1、注册驱动_第一种方法 Driver driver = new com.mysql.cj.jdbc.Driver(); DriverManager.registerDriver(driver);
//1、注册驱动_第二种方法 Class.forName("com.mysql.cj.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次报错,不过也慢慢的才了解了点原理。当然肯定还有很多比较不足之处,还望大家多多指正。
也祝愿大家都能成功实现自己想要的功能