【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();

相关推荐
执笔诉情殇〆1 分钟前
springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
数据库·spring boot·mysql·达梦
小王子10241 分钟前
Django+DRF 实战:从异常捕获到自定义错误信息
后端·django·web开发
不良手残7 分钟前
IDEA类和方法注释模板设置-保姆教程
java·开发语言
GoodStudyAndDayDayUp12 分钟前
调用海康API预览视频
java·海康
李迟17 分钟前
在Linux服务器上使用kvm创建虚拟机
java·linux·服务器
Dcs18 分钟前
6 个 PWA 高阶策略,助你提升用户留存与参与度
java
hdsoft_huge23 分钟前
Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
java·spring boot·后端
软件技术NINI39 分钟前
springMvc的简单使用:要求在浏览器发起请求,由springMVC接受请求并响应,将个人简历信息展示到浏览器
数据库·mysql
就改了1 小时前
JUC小册——公平锁和非公平锁
java·开发语言
ThetaarSofVenice1 小时前
垃圾收集相关算法Test
java·jvm·算法