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

news2024/9/20 8:04:36

前言:

🌟🌟本期讲解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语句时,代码如下:

 //构造sql
  String 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)

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

 


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

                                                                 😊😊  期待你的关注~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2142280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】初识信号与信号产生

目录 一、认识信号 1 .什么是信号 2 .哪些情况会产生信号 3 . 查看信号 4 . 信号处理 二、产生信号 1 .通过终端按键产生信号 2 .调用系统函数向进程发信号 3 . 由软件条件产生信号 4 . 由硬件异常产生信号 一、认识信号 1 .什么是信号 你在网上买了很多件商品,再…

技术上,如何复现 o1?

知乎:周舒畅链接:https://zhuanlan.zhihu.com/p/720127190 基础模型 搞 o1 首先需要一个基模,这个基模必须是: 能进行“长”生成。注意这和“长 context”不是一回事。模型生成的结果,经常会有自激的噪声存在&#xf…

Unity多国语言支持

Unity多国语言支持 项目在我的课程 ”淘金城堡“ 中应用 项目的地址:http://t.csdnimg.cn/m0hFd 一、基本概念 在Unity中加入多国语言的支持可以让我们发布的游戏或应用上线在拥有不同语言的国家或地区。 下面介绍一款Unity官方提供的插件“Localization package…

USB中的传输和事务

文章目录 一、USB中的四种事务1. **控制事务(Control Transaction)**2. **批量事务(Bulk Transaction)**3. **中断事务(Interrupt Transaction)**4. **等时事务(Isochronous Transaction&#x…

C++第五十弹---类型转换全解析:从静态到动态,一网打尽

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言中的类型转换 2. 为什么C需要四种类型转换 2.1、内置类型 -> 自定义类型 2.2、自定义类型 -> 内置类型 2.3、自定义类型 -&…

Suno新上线Covers翻唱新 - 实现音频风格任意转换

历史文章 Suno AI如何解决中文多音字的问题?耗费500积分,亲测有效 ,V4版本会不会直接支持呢? 上传音频,打造贴合您喜好的风格歌曲创作,这一波新玩法我打8分 Suno AI Noisee AI 做抖音冥想账号实操 音乐…

网络安全-利用 Apache Mod CGI

一、环境 蚁剑官网拉取 二、开始操作 蚁剑连接 一样终端命令不能执行 可以看到putenv已经禁用 我们开始一下,跳入一个新终端且可以执行命令 我们具体看一下干了什么事情 上传了一个htaccess这个文件的作用是让以后所有ant文件都以cgi去执行 三、总结 cgi文件可以…

【C++】C++的多态

目录 多态的使用 多态的概念 多态的定义和实现 虚函数 构成多态的条件 特殊情况:协变 析构函数的重写 怎么实现 为什么实现 override和final关键字 override final 重载/重写/隐藏的对比 纯虚函数和抽象类 纯虚函数 抽象类 多态的实现 虚函数表指针…

魔方财务安装指南

本文将详细介绍魔方财务的安装、升级和迁移过程,确保您能够顺利地部署和使用魔方财务系统。 服务器配置一览表 以下是魔方财务1.0.0及更高版本的最低和推荐系统要求: 需求名称推荐配置最低要求OSCentOS/Debian/UbuntuLinux(不要使用window…

IP协议及相关特性

IP协议负责地址管理和路由选择。它的组成为: 接下来我们将对其中较重要的部分进行介绍。 4位版本:这里的四位版本只有两个取值 分别为IPv4和IPv6,这两个额分别为不同的IP协议,但是现在主流的还是IPv4但是近年来IPv6在中国的普及率…

2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码演示

目录 问题 11.1 对这些玻璃文物的表面风化与其玻璃类型、纹饰和颜色的关系进行分析数据探索 -- 单个分类变量的绘图树形图条形图扇形图雷达图Cramer’s V 相关分析统计检验列联表分析卡方检验Fisher检验绘图堆积条形图分组条形图分类模型Logistic回归随机森林import matplotlib…

中秋之际,唱响工体!玛丽亚·凯莉2024演唱会北京站璀璨上演

续写传奇华章 启幕音乐盛典 中秋之际,全国数万乐迷翘首以待的音乐盛典如约而至。时隔多年,传奇天后玛丽亚凯莉惊艳开唱工体! 夜幕降临,圆月高悬,在不绝于耳的欢呼声中,玛丽亚凯莉以一袭流光溢彩的礼服优雅…

【LIO】FAST-LIO论文详解

FAST-LIO论文详解 1. 摘要2. 简介1. 相关工作A. LiDAR 里程计和地图绘制 2. 实现方法A. 基础知识1. 连续模型在这里插入图片描述 B. 激光雷达测量的预处理C. 状态估计1) 前向传播:2) 反向传播与运动补偿:3) 残差计算: 1. 摘要 提出了一种计算…

简单题21 - 合并两个有序链表(Java)20240917

问题描述: java代码: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val…

Java 技巧 如何在IDEA2024 中快速打出System.out.println();

1.基本用法 键入sout回车 回车后变成: 2.打印变量 快速打印变量,以打印变量名为set为例,set.sout回车, 回车后变成

简单题26 - 删除有序数组中的重复项(Java)20240917

问题描述&#xff1a; java代码&#xff1a; class Solution {public int removeDuplicates(int[] nums) {if (nums.length 0) return 0; // 处理空数组情况int i 0; // 指向新数组中的最后一个不重复元素for (int j 1; j < nums.length; j) {if (nums[j] ! nums[i]) { …

室内灯具检测系统源码分享

室内灯具检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

从kaggle竞赛零基础上手CV实战(Deepfake检测)

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 从kaggle竞赛零基础上手CV实战 从kaggle竞赛零基础上手CV实战&#xff08;Deepfake检测&#xff09; 目录 从kaggle竞赛零基础上手CV实战&#xff08;Deepfake检测&#xff09;背景介绍学习地址课程大纲课程特色…

方法引用(Java)

把已经有的方法拿过来用&#xff0c;当做函数式接口中抽象方法的方法体 1.引用处必须是函数式接口 2.被引用的方法必须已经存在 3.被引用的方法形参的返回值需要跟抽象方法保持一致 4.被引用方法的功能要满足当前需求 package function;import java.util.Arrays;public cl…

网络高级项目( 基于webserver的工业数据采集和控制项目)

目录 一、项目要求&#xff1a; 二、演示效果&#xff1a; 设备端&#xff1a; Modbus用户控制端&#xff1a; 服务器端&#xff1a; 网页端&#xff1a; 三、 项目代码&#xff1a; Modbus用户控制端代码&#xff1a; 服务器端代码&#xff1a; 网页端代码&#xff1…