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

相关推荐
掉鱼的猫8 分钟前
Solon 整合 LiteFlow 规则引擎:概念与实战
java·workflow
Java水解9 分钟前
RabbitMQ用法的6种核心模式全面解析
后端·rabbitmq
她说..9 分钟前
Stream API流学习总结
java
用户4099322502129 分钟前
FastAPI的查询白名单和安全沙箱机制如何确保你的API坚不可摧?
前端·后端·github
橙序员小站18 分钟前
JDK17 前后写法对比:差点没认出是 Java
java·后端
秋千码途18 分钟前
小架构step系列26:Spring提供的validator
java·spring·架构
肖哥弹架构20 分钟前
Spring JDBCTemplate 十大性能优化秘籍:从慢如蜗牛到快如闪电!
java·后端·程序员
wenb1n21 分钟前
【Oracle】套接字异常(SocketException)背后隐藏的Oracle问题:ORA-03137深度排查与解决之道
后端
苦学编程的谢22 分钟前
MyBatis_3
java·开发语言·后端·mybatis