【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)
🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!
💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。
😊😊 期待你的关注~~~
相关文章:
【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)
前言: 🌟🌟本期讲解Java中JDBC编程,希望能帮到屏幕前的你。 🌈上期博客在这里:【MySQL】MySQL索引与事务的透析——(超详解)-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&a…...
电脑安装OpenWRT系统
通过网盘分享的文件:OpenWRT 链接: https://pan.baidu.com/s/1nrRBeKgGviD31Omji480qA?pwd9900 提取码: 9900 下面开始教程: 1.先把普通U盘制作成一个PE启动盘,我用的是微PE工具箱,直接安装PE到U盘。 2.把写盘工具和openWRT系统…...
说说几款耳机
从前,大约在戴森推出他们那款奇特的发明——戴森耳机与空气净化器组合一年后,人们仍对这个奇怪的产品感到困惑。这款穿戴式空气净化耳机更像是一个实验,缺乏实际用途。回想起那时的评测,大家一致认为这是有史以来最无意义的产品之…...
Excel爬虫使用实例-百度热搜
原来excel也能爬虫抓取数据,而且简单好用 目标网址: https://top.baidu.com/board?tabrealtime 下面是一个excel爬虫的小小例子,爬取了百度热搜的前50(还有一个置顶的热搜没有1,2,3编号) 实现…...
arcgisPro地理配准
1、添加图像 2、在【影像】选项卡中,点击【地理配准】 3、 点击添加控制点 4、选择影像左上角格点,然后右击填入目标点的投影坐标 5、依次输入四个格角点的坐标 6、点击【变换】按钮,选择【一阶多项式(仿射)】变换 7…...
SpringBoot开发——获取HTTP请求头(Header)的三种方法
文章目录 方法一:使用HttpServletRequest实现原理方法二:使用RequestContextHolder实现原理方法三:使用RequestHeader注解实现原理总结 在Spring Boot应用中,获取HTTP请求头(Header)信息是常见的需求&#…...
大模型入门3:理解LLAMA
LLama在transformers库中的代码,以及各部分原理Llama3.1技术报告LLama 33b 微调尝试 Model a stack of DecoderBlocks(SelfAttention, FeedForward, and RMSNorm) decoder block 整体结构:最大的区别在pre-norm x -> norm(x) -> attention() -…...
React学习day07-ReactRouter-抽象路由模块、路由导航、路由导航传参、嵌套路由、默认二级路由的设置、两种路由模式
14、ReactRouter续 (2)抽象路由模块 1)新建page文件夹,存放组件 组件内容: 2)新建router文件夹,在其下创建实例 3)实例导入,使用 4)效果 (3&…...
Unity项目的脚本继承关系
1.Unity项目的脚本继承关系包括四层:自己的脚本、MonoBehaviour、Behaviour、Component、Object。 2.通过F12跳转可以查看各继承类中的方法和属性,如MonoBehaviour类中主要包括协程和相关API。 3.Component类中包含组件的只读属性、消息发送等API&…...
【自动驾驶】决策规划算法(一)决策规划仿真平台搭建 | Matlab + Prescan + Carsim 联合仿真基本操作
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
grep 命令:文本搜索
一、grep 命令简介 grep 命令用于在文件中搜索指定模式的文本,并显示匹配的行。 二、grep 命令参数 匹配规则:可以是 普通字符 串或 正则表达式。 grep [选项] [匹配规则] [指定目录]常用选项: -i, --ignore-case&#…...
python画图|中秋到了,尝试画个月亮(球体画法)
学习了一段时间的画图,已经掌握了一些3D图的画法,部分链接如下: python画图|极坐标下的3D surface-CSDN博客 python画图|3D参数化图形输出-CSDN博客 我们今天尝试一下月亮的画法。 【1】官网教程 首先还是到达官网教程学习: …...
【网络安全的神秘世界】攻防环境搭建及漏洞原理学习
🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 Kali安装docker 安装教程 PHP攻防环境搭建 中间件 介于应用系统和系统软件之间的软件。 能为多种应用程序合作互通、资源…...
pythonnet python图像 C# .NET图像 互转
C#是dotnet的代表虽然不是一个东西但是在这里代表同一件事,不要在意细节。 pythonnet是 python 和.net无缝连接的桥梁。那么python的图像是numpy表示,C#图象是Bitmap。 做图像想要python的便利又想要dotnet的强大就需要图像类型转换。 上程序。 1.Bi…...
spring security OAuth2 搭建资源服务器以及授权服务器/jdbc/jwt两种方案
一、认证服务器基于jdbc方式 如果不懂请移步上一篇文章:Spring security OAuth2 授权服务器搭建-CSDN博客 在上一篇文章中,TokenStore的默认实现为 InHenoryTokenStore 即内存存储,对于 CLient 信息,userDetaitsServce 接负责从存…...
计算机视觉—3d点云数据基础
点云数据 3d点云数据由来 3d点云 3D Point Cloud是一种用于表示三维空间中对象或场景的数据结构。在最基础的形式中,它是一个包含多个三维坐标点(X, Y, Z)的集合。这些点是通过对实际物体或场景表面进行离散采样而获得的,因此&a…...
Matlab simulink建模与仿真 第十八章(Stateflow状态机)
参考视频:Simulink/stateflow的入门培训_哔哩哔哩_bilibili 一、概述 Stateflow是集成于Simulink中的图形化设计与开发工具,主要用于针对控制系统中的复杂控制逻辑进行建模与仿真,或者说,Stateflow适用于针对事件响应系统进行建模…...
Linux系统终端中文件权限的10位字符是什么意思
Linux操作系统终端长格式显示的文件 在Linux操作系统终端中用文件长格式命令ls -l显示文件,如上图。第一列10个字符表示的含义如下: drwxrwxrwx 第一个字符是表示该文件的类型,如红色d表示该文件是一个目录,详细内容可以参考我…...
Qt QSerialPort串口编程
文章目录 Qt QSerialPort串口编程Qt Serial Port模块简述1.QSerialPortInfo类1.1示例用法 2.QSerialPort类2.1设置串口参数2.2打开串口2.3数据读写2.4关闭串口 3.串口编程基本流程3.1 简单实例 Qt QSerialPort串口编程 Qt 框架的Qt Serial Port 模块提供了访问串口的基本功能&…...
扫雷游戏及其中的知识点
大家好呀,今天我们给大家讲解扫雷游戏如何用C语言制作,以及制作扫雷游戏中的一些C语言知识。 想到扫雷游戏,大家有什么想法吗?大家还记得扫雷游戏是什么样子的吗?我在网上找了一些扫雷游戏的图片给大家提供参考: 如图所示,扫雷游戏需要的元素有以下几个: 1.进入游戏界面…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

