当前位置: 首页 > news >正文

【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.寻找资源

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+拼接变量
String sql = "insert into student values("+id+",' "+name+" ')";

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

4.1.1.2?替换变量
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遍历记录
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();

http://www.dtcms.com/a/262780.html

相关文章:

  • DDL-8-小结
  • 前端开发面试题总结-原生小程序部分
  • LLaMA-Factory支持的Alpaca和ShareGPT格式
  • 插入排序的简单介绍
  • 【算法】动态规划 70: 爬楼梯
  • 函数在球内恒为零的证明
  • 杭州燕壹画室:美术艺考领域新崛起的黑马画室
  • Kotlin空安全与异常处理
  • Apache Seata < 2.3.0 raft反序列化漏洞
  • 使用Dirichlet分布进行随机初始化
  • Hily×亚矩云手机:社交元宇宙的“云端心跳加速器”
  • mysql mvcc
  • (4)pytest-fixture
  • Webpack原理剖析与实现
  • Hive SQL 实战:电商销售数据分析全流程案例
  • 【指针与结构体的使用详解】
  • nis打包(HM NIS EDIT脚本编辑器)
  • 多路转接 poll
  • UV包管理学习 - 解决Python包线上线下版本不一致的问题
  • C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)
  • 【AI时代速通QT】第四节:Windows下Qt Creator调试指南
  • 百胜软件获邀走进华为,AI实践经验分享精彩绽放
  • 设计模式之外观模式
  • Hadoop WordCount 程序实现与执行指南
  • MidJourney生成东汉末年项羽全身像提示词
  • 多线程环境下的线程安全资源与缓存池设计:ThreadSafeObject 与 CachePool 实例解析
  • 深入理解 MVCC:数据库高并发的核心引擎
  • LabVIEW键盘鼠标监测控制
  • 七天学会SpringCloud分布式微服务——06——Sentinel
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动