【MySQL】JDBC编程

MySQL(七)JDBC编程

一、驱动包

1.性质

1.1底层差异性

1.2JDBC接口统一性

2.导入

2.1复制导包

2.2标记作库

二、JDBC编程

1.寻找资源

1.1URL

1.1.1网址作用

1.1.2主机IP

1.1.3端口号

1.1.4数据库名

1.1.5访问资源参数

2.访问认证

2.1身份

2.2密码

3.连接通道

4.数据传输

4.1创建传输包

4.1.1创建sql

4.1.1.1+拼接变量

4.1.1.2?替换变量

4.2发送传输包

4.2.1发送写sql

4.2.2发送读sql

4.2.2.1遍历记录

4.2.2.2读取记录

5.回收资源

5.1销毁结果集合

5.2销毁传输包

5.3销毁通道


一、驱动包

1.性质

1.1底层差异性

应用程序 都是用代码 写出来的,++不同的应用程序,其设计时的编程模范 会不同++ ,所以 为编程语言 代码操作使用层 设计给的驱动包里 类与接口的范式 也就会随着 对应上底层程序的代码 而不同


1.2JDBC接口统一性

在数据库应用程序里,++Java规定了 必须以Java设计的 数据库编程接口JDBC 来操作使用数据库++ ,所以各数据库厂商 就多设计了 底层接口 等效形式转化成 JDBC接口的 驱动程序,使得Java 用JDBC统一了 所有数据库的API接口


2.导入

任何应用程序的 编程层操作使用,都需要++将 应用程序设计好的 实现使用功能的 类与接口 通过驱动包导入 进编程项目 中 作为第三方库使用++

2.1复制导包

驱动包 复制导入 要作为第三方库的 目录

所有的.java文件 加载成 许多.class文件,所有的.class文件 整理打包好 到一个.jar压缩包文件 进行程序发布的


2.2标记作库

驱动包所处的目录 标记成 第三方库


二、JDBC编程

1.寻找资源

java 复制代码
DataSource dataSource = new MysqlDataSource();

((MysqlDataSource)dataSource).setUrl(String_URL);

mysql数据源 通过URL网址 找到mysql服务器 所在网络上的 具体资源位置

1.1URL

"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"

1.1.1网址作用

jdbc:mysql 表明该网址 是用来给 jdbc程序操作mysql 使用的


1.1.2主机IP

127.0.0.1 是jdbc要操作的 mysql服务器的 所处主机的 网络IP地址,当jdbc应用程序 本身所处的主机 就同是mysql服务器所处的 同台主机时,使用127.0.0.1环回IP 指向应用程序自己所处的主机 即就指向了 mysql服务器主机的位置


1.1.3端口号

一台主机上 有许多的应用程序 都要操作网络,3306mysql与网络对接的 端口号


1.1.4数据库名

确定jdbc 要操作mysql服务器里的 哪个数据库


1.1.5访问资源参数

键对应填值 的形式填写参数,键值对之间 用**&**分隔

characterEncoding=utf8 --- 以utf8字符集 进行数据库与应用程序的 数据传输

useSSL=false --- 数据库与应用程序之间的网络通信 中间是否要加密


2.访问认证

2.1身份

((MysqlDataSource)dataSource).setUser(String_Ident);

mysql数据源 确定jdbc 访问数据库的身份,root 是mysql默认自带有的用户(管理员)

2.2密码

((MysqlDataSource)dataSource).setPassword(String_Passworld);

mysql数据源 确定jdbc 访问数据库的密码


3.连接通道

dataSource.getConnection();

---> return Connection

数据源 寻找并成功访问上之后,数据源 向jdbc 建立连接通道,后续在通道中进行 请求-响应 的交互


4.数据传输

4.1创建传输包

connection.prepareStatement(String_sql);

---> return PreparedStatement

在连接通道中 创建传输包,将要发送的 sql语句字符串 存储在传输包中,传输包 会进行sql语句的 预处理解析、检查 并把解析的结构化数据打包,++在应用程序这边 完成++解析检查这部分的工作,减少了mysql服务器的 开销负担

4.1.1创建sql
4.1.1.1+拼接变量
java 复制代码
String sql = "insert into student values("+id+",' "+name+" ')";

变量 可直接**+拼接进sql语句字符串,但这样会使得 可以通过在sql语句中 对变量输入非法内容 实现对数据库的攻击**,不安全

4.1.1.2?替换变量
java 复制代码
String sql = "insert into student values(?,?)";
connection.prepareStatement(sql);

preparedStatement.setDatatype(下标,变量);

使用占位符? 先替入 后规范换 的方式 可将变量安全替换进 sql字符串中,占位符的下标是从1开始的


4.2发送传输包

4.2.1发送写sql

preparedStatement.executeUpdate();

---> return int

传输包 以写的形式 将自己发送到数据库服务器 执行,返回数据库中 影响到的行数

4.2.2发送读sql

preparedStatement.executeQuery();

---> return ResultSet

传输包 以读的形式 将自己发送到数据库服务器 执行,返回 查询结果临时表的 结果集合


4.2.2.1遍历记录
java 复制代码
while (resultSet.next()) {

}

resultSet.next();

---> return boolean

从临时表的 第0个记录开始,往后 保存光标位置遍历 取得一个记录,遍历到表尾空时 返回false


4.2.2.2读取记录

result.getDatatype("col_name");

---> return Datatype

获取 遍历所处记录的 指定字段数据


5.回收资源

后获取到的资源先释放 的顺序 回收资源

5.1销毁结果集合

resultSet.close();

5.2销毁传输包

preparedStatement.close();

5.3销毁通道

connection.close();

相关推荐
bobz9656 分钟前
Python 项目打包为 Windows exe 最好用的工具是哪个?
后端
用户214118326360219 分钟前
超算挑战赛实战!AI 一键生成中医药科普短视频,青少年轻松学药材
后端
还是鼠鼠25 分钟前
tlias智能学习辅助系统--Maven 高级-私服介绍与资源上传下载
java·spring boot·后端·spring·maven
追逐时光者30 分钟前
2025 年程序员必备 TOP 10 高效实用工具
后端
爱掘金的土拨鼠1 小时前
国产化dm数据库锁表解锁
数据库
20181 小时前
Supabase migration 开发实践
后端
Xiaokai丶1 小时前
Java 8 新特性深度剖析:核心要点与代码实战
java
灵魂猎手1 小时前
3. MyBatis Executor:SQL 执行的核心引擎
java·后端·源码
Galaxy在掘金1 小时前
从业8年,谈谈我认知的后端架构之路-1
java·架构
花花无缺1 小时前
MySQL 的存储引擎-InnoDB 和 MyISAM的对比
mysql