当前位置: 首页 > news >正文

【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)

前言:

🌟🌟本期讲解Java中JDBC编程,希望能帮到屏幕前的你。

🌈上期博客在这里:【MySQL】MySQL索引与事务的透析——(超详解)-CSDN博客

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

​ 

目录

📚️1.引言 

 📚️2.JDBC编程环境配置

2.1JDBC编程由来

2.2驱动包环境配置

         1.进入中央仓库

2.搜索mysql

3.选择适配版本

4.点击jar,然后进行下载

 5.找到下载的文件,并进行复制

6.进入idea,新建目录,并复制jar

7.将lib目录设置成库

📚️3.JDBC编程大致流程

3.1建立数据源

3.2和数据库服务器建立连接

3.3构造sql语句 

3.4发送sql给服务器

 3.5关闭连接释放资源

📚️4.实现增删查改

4.1插入数据

4.2删除操作

4.3修改数据

4.4查看数据

📚️5.总结

​ 

📚️1.引言 

    Hello啊家人们~~~ 小编上期讲解了关于MySQL中的索引与事务,相信大家对这部分数据库知识有了更进一步的了解,那么接下来,小编将详细讲解关于JDBC编程,以及如何安装环境,大家准备好了吗,发车咯~~~🥳🥳🥳;

且听小编讲解,包你学会!!!

 📚️2.JDBC编程环境配置

2.1JDBC编程由来

        在数据库编程中,要有数据库服务器提供一些API(应用程序编程接口)供程序员使用,但是我们之前介绍的各种数据库:Oracle  MySQlL  SQL server等等,这些提供的API都不相同,那么我们此时的学习成本就会变高;

      此时JAVA就提供了一套规范的API,各个数据库提供的API都要和JAVA对接上,那么此时就有了JDBC编程,那么就需要一个类似于转换器一样的东西,来连接java和数据库两方,即MySQL驱动包~~~

2.2驱动包环境配置

要想在程序中操作MySQL,就需要MySQL驱动包,并将驱动包导入到项目中去;

1.进入中央仓库

在浏览器上搜索:中央仓库,或者网址:https://mvnrepository.com;

图片展示:

注意:如果进不去,那么就要使用watt toolkit进行网页加速;

2.搜索mysql

可以看到有以下两个驱动包:

注意:此时要使用第二个驱动包,并点击;

3.选择适配版本

点击驱动包后,要点击进入与你当前MySQL适配的版本,小编这里的MySQL版本是5.开头的,所以选择的驱动包版本也是要5开头的。

图片如下:

4.点击jar,然后进行下载

 5.找到下载的文件,并进行复制

6.进入idea,新建目录,并复制jar

此时就将驱动包成功导入了;

7.将lib目录设置成库

鼠标指向lib并右击鼠标,找到add as library,并点击此时就可以开心写代码啦~~~;

📚️3.JDBC编程大致流程

首先我们要在数据库先建立一个表,这里小编就不再展示,如何建立了,前几期有讲;

3.1建立数据源

代码如下:

//建立数据源DataSource dataSource=new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("642364");

       这里的DataSource就是数据源,描述数据库服务器所在的位置,这里使用向下转型是为了低耦合,因为MysqlDataSource是来自于mysql的驱动包,但是每个数据库的驱动包是不一样的,防止在使用其他数据库时,要改很多bug;

注意:

在url代表的是网络资源位置,即给JDBC操作mysql使用的

127.0.0.1:代表的是IP地址,是一台主机在网络上的位置,这是一个特殊的地址即(回环IP),自己给自己发送信息;

java109:是小编在数据库中创建的库;

?characterEncoding=utf8&useSSL=false:问号是代表后面的的一系列参数,&是代表参数之间不同的分割符,useSSL代表否加密,一般为false;

找到服务器位置后,还要进行认证;

3.2和数据库服务器建立连接

代码如下:

//和数据库服务器建立连接  后序才有请求和响应交互Connection connection=dataSource.getConnection();

这里会抛出异常

处理异常:

public static void main(String[] args) throws SQLException {

注意:建立数据库服务器的连接之后才能进行进行请求——响应交互,这里还要处理编译时异常;

3.3构造sql语句 

在前面准备工作做好之后,就能构造sql语句了;

代码如下:

 String sql="insert into student values(1,'孙悟空') ";//进行预处理PreparedStatement statement=connection.prepareStatement(sql);

这里的sql语句其实和,mysql操作的代码方式是一样的; 

注意:

sql语句下面代码,代表的是预处理,是为了检查sql语句是否有啥问题,解析完成后就会得到一个结构化数据,再将这个结构化数据给数据库服务器,这样服务就省下了解析这部分工作; 

3.4发送sql给服务器

代码如下:

 //把SQL发送给服务器int n=statement.executeUpdate();//影响的行数System.out.println("n="+n);

注意:这里用executeUpdate()方法使用于插入,删除,修改操作,这里的n代表的是sql执行影响的行数;

 3.5关闭连接释放资源

代码如下:

 //最后释放资源,最后获取的资源先释放statement.close();connection.close();

因为程序通过代码和数据库服务器建立连接是要消耗一定的硬盘/软件资源

注意:在写资源的释放时,先获取的资源后释放,后获取的资源后释放;

📚️4.实现增删查改

在上述的过程实现后,我们就要对这个模板进行修改;

4.1插入数据

在第3步构造sql语句时,写入插入数据的sql执行语句;

代码如下:

String sql="insert into student values(1,'孙悟空') ";

此时点击运行后得到n=1,代表此时影响的数据为一行;

此时在mysql中输入“select * from student”;这里的student是小编在数据库中建立的表;

mysql> select * from student;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 孙悟空    |
+------+-----------+
1 row in set (0.00 sec)

那么就可以看到此时,在表中我们已经在idea上写的插入的数据,那么我吗可以发现,如果这么写,就已经将代码写死了,那么我们就可以引入Scanner函数;

代码如下:

 Scanner sc=new Scanner(System.in);System.out.println("输入id");int id=sc.nextInt();System.out.println("输入名字");String name=sc.next();.
.
.
String sql="insert into student values(?,?) ";
//进行预处理
PreparedStatement statement=connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);

此时我们自主输入我们想要插入的数据时,就要通过statement中的函数setInt或者setString方法,

注意:

要根据插入的类型,编写出不同的方法; 

在方法后的数字代表第几个问号,再后面就是列名(这里的问号代表占位符);

4.2删除操作

 和插入操作基本一致,但是不用自己进行输入id等,所以就只修改sql语句即可;

代码如下:

String sql="delete from student where id=1

 此时我们运行后,在次在mysql查询表;

mysql> select * from student;
Empty set (0.00 sec)

此时可以发现数据库表中的数据被删除了~~~

4.3修改数据

这里和上述的删除操作也差不多,都是修改sql执行语句就可以了;

我们在执行修改之前看一下mysql数据库中的表:

mysql> select * from student;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 孙悟空    |
|    1 | 孙悟空    |
|    1 | 孙悟空    |
|    1 | 孙悟空    |
+------+-----------+

此时我们在idea中进行修改操作 

代码如下:

String sql="update student set name='猪八戒' where id=1";

那么现在我们再次打开数据库进行查看:

mysql> select * from student;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 猪八戒    |
|    1 | 猪八戒    |
|    1 | 猪八戒    |
|    1 | 猪八戒    |
+------+-----------+

4.4查看数据

注意这里的查看数据就和之前的就不一样了,且听小编进行分析一下;

我们在构造sql语句时,代码如下:

 //构造sqlString sql="select * from student";PreparedStatement statement=connection.prepareStatement(sql);

此时的sql语句就不一样了

之后我们就不能使用:

int n=statement.executeUpdate();//影响的行数

来进行影响的行数,我们要重新使用另一个方法,来进行结果集合的遍历,那么如何拿到结果集合呢?此时就要用另一个方法;

//表示查询的结果集合,后面就根据其进行遍历
ResultSet resultSet=statement.executeQuery();

这样我们就拿到了结果集合,然后我们就要对其进行遍历,代码如下:

//进行遍历while (resultSet.next()){int id=resultSet.getInt("id");String name=resultSet.getString("name");System.out.println("id="+id+"  "+"name="+name);}

注意:在遍历时通过结果集合进行遍历,整型就用getInt方法,而字符串就使用getString方法;最后进行输出打印即可;

最后进行资源释放:

//释放资源
resultSet.close();
statement.close();
connection.close();

测试:

我们先查看我们数据库的表中数据

mysql> select * from student;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 猪八戒    |
|    1 | 猪八戒    |
|    1 | 猪八戒    |
|    1 | 猪八戒    |
+------+-----------+

在JAVA中进行查看数据,运行程序结果如下:

id=1  name=猪八戒
id=1  name=猪八戒
id=1  name=猪八戒
id=1  name=猪八戒Process finished with exit code 0

那么我们可以看到在JAVA中输出了我们表中的数据信息。

📚️5.总结

💬💬小编本期讲解了关于如何在JAVA中配置JDBC编程环境,和JAVA和MySQL数据库建立联系,JDBC编程的固定套路,最后通过数据库和idea的代码展示了如何操作表的增删查改~~~

代码地址在这里:JDBC: JDBC编程,csdn实例代码 (gitee.com)

 🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!

 


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

                                                                 😊😊  期待你的关注~~~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索人工智能的未来趋势
  • CI/CD持续集成和持续交付(git工具、gitlab代码仓库、jenkins)
  • 设计模式 桥接模式(Bridge Pattern)
  • Python数据分析工具(一):Requests的用法
  • Unity实战案例全解析 :PVZ 植物脚本分析
  • 经典sql题(六)查找用户每月累积访问次数
  • 【Hot100】LeetCode—84. 柱状图中最大的矩形
  • Rust表达一下中秋祝福,群发问候!
  • 【优化器】Optimizer——深度学习中的优化器是什么作用呢?
  • claude,gpt,通义千问
  • 5. Python之数据类型
  • MATLAB窗口操作常用命令
  • 基于 Delphi 的家庭财务管理系统
  • Linux-mysql5.7-mysql8.0安装包下载及安装教程,二合一
  • 车型展示+接驳体验!苏州金龙海格客车闪耀汉诺威商用车展
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【Amaple教程】5. 插件
  • ES学习笔记(12)--Symbol
  • javascript面向对象之创建对象
  • JS变量作用域
  • Lucene解析 - 基本概念
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Promise面试题2实现异步串行执行
  • SQLServer之创建数据库快照
  • webpack入门学习手记(二)
  • yii2中session跨域名的问题
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 机器学习中为什么要做归一化normalization
  • 聚类分析——Kmeans
  • 前端性能优化——回流与重绘
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 听说你叫Java(二)–Servlet请求
  • 微信小程序填坑清单
  • 小程序开发中的那些坑
  • HanLP分词命名实体提取详解
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​queue --- 一个同步的队列类​
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (未解决)macOS matplotlib 中文是方框
  • (转) 深度模型优化性能 调参
  • (转)Sublime Text3配置Lua运行环境
  • (转)winform之ListView
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net core 控制台应用程序读取配置文件app.config
  • .NET MVC 验证码
  • .NET Standard 的管理策略
  • .NET 分布式技术比较
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .NET构架之我见
  • .sh 的运行