2025/11/25

news/2025/11/23 18:27:55/文章来源:https://www.cnblogs.com/cyjcyjcyj/p/19261199

2025/11/25

JDBC 操作数据库的完整流程:
加载数据库驱动 → DriverManager 获取 Connection(数据库连接)→ 通过 Connection 创建 Statement/PreparedStatement → 执行 SQL → 返回 ResultSet(查询结果)→ 关闭资源(ResultSet → Statement → Connection)
这四个组件的协作关系:DriverManager 是「连接工厂」,Connection 是「数据库会话」,Statement 是「SQL 执行器」,ResultSet 是「查询结果容器」。

DriverManager(驱动管理类)
核心定义
java.sql.DriverManager 是JDBC的「驱动管理器」,核心作用是:
注册 / 管理不同数据库的驱动(如 MySQL、Oracle 驱动);
根据数据库连接 URL、用户名、密码,获取 Connection 连接对象;
底层会遍历已注册的驱动,找到能匹配 URL 的驱动,创建对应的 Connection。
底层原理
数据库驱动(如 com.mysql.cj.jdbc.Driver)会在加载时,自动调用 DriverManager.registerDriver() 注册自身;
DriverManager.getConnection() 会遍历已注册的驱动,调用驱动的 connect() 方法,返回可用的 Connection;
MySQL 8.0+ 后,驱动类会自动加载(无需手动 Class.forName()),底层是利用 JDK 的「SPI 机制」自动扫描驱动。

主要的方法:DriverManager.getConnection(String url, String user, String password)
核心:获取数据库连接
关键参数:数据库连接 URL
URL 是驱动匹配的核心,不同数据库的 URL 格式不同,以 MySQL 为例:
jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
? 后是参数:
useSSL=false:关闭 SSL(开发环境用,生产环境建议开启);
serverTimezone=UTC:设置时区(解决 MySQL 8.0+ 时区报错);
characterEncoding=utf8:设置字符编码。

Connection(数据库连接对象)
核心定义
java.sql.Connection 代表 Java 程序与数据库的「一次会话连接」,是操作数据库的「基础入口」—— 所有 SQL 执行都必须基于 Connection。
每个 Connection 对应一个数据库会话,支持事务、创建执行器(Statement);
Connection 是「稀缺资源」,使用后必须关闭(否则会导致数据库连接池耗尽)

功能分类 核心方法 作用
创建执行器 createStatement() 创建 Statement(静态 SQL 执行器)
prepareStatement(String sql) 创建 PreparedStatement(预编译 SQL 执行器,推荐)
prepareCall(String sql) 创建 CallableStatement(执行存储过程)
事务管理 setAutoCommit(boolean autoCommit) 设置是否自动提交事务(默认 true)
commit() 提交事务
rollback() 回滚事务
setTransactionIsolation(int level) 设置事务隔离级别(如防脏读、不可重复读)
连接管理 close() 关闭连接(释放资源)
isClosed() 判断连接是否关闭

关键:事务管理(实战必用)
数据库默认「自动提交事务」(执行一条 SQL 就提交),但复杂业务(如转账)需要手动控制事务:
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 1. 关闭自动提交(开启手动事务)
conn.setAutoCommit(false);

try {// 2. 执行多条SQL(转账:A扣钱,B加钱)String sql1 = "UPDATE account SET money = money - 100 WHERE id = 1";String sql2 = "UPDATE account SET money = money + 100 WHERE id = 2";try (Statement stmt = conn.createStatement()) {stmt.executeUpdate(sql1);stmt.executeUpdate(sql2);}// 3. 无异常则提交事务conn.commit();System.out.println("事务提交成功");
} catch (SQLException e) {// 4. 有异常则回滚事务conn.rollback();System.err.println("事务回滚:" + e.getMessage());
}

} catch (SQLException e) {
e.printStackTrace();
}
避坑点
Connection 不能频繁创建 / 关闭:生产环境需用「数据库连接池」(如 Druid、HikariCP)复用连接;
事务回滚后,需重新开启事务(或恢复自动提交);
关闭 Connection 时,会自动关闭关联的 Statement/ResultSet。

ctrl+alt+T代码块

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

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

相关文章

完整教程:单体架构中的事件驱动架构:Java应用程序的渐进式重构

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025/11/26

2025/11/26事务 数据库中一组不可分割的操作集合,要么全部执行成功,要么全部执行失败(要么全做,要么全不做),核心是保证数据一致性。 核心特性(ACID) A(原子性):操作不可拆分,要么全成要么全回滚(如转账:…

TRUG如何验证随机性

在之前的项目中,也有使用外购的TRNG模块产生随机数,一般只验证集成、可以产生数据,并未对产生数据的随机性进行评估。 那么如何评估TRNG产生数据的随机性? 我们无法“证明”一个物理世界或算法生成的序列是绝对随即…

【网络】在windows下,使用自带的ftp服务器,并添加账户 - 指南

【网络】在windows下,使用自带的ftp服务器,并添加账户 - 指南2025-11-23 18:20 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impo…

实用指南:JVM篇:一文读懂JVM:工作原理之核心技术解析

实用指南:JVM篇:一文读懂JVM:工作原理之核心技术解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

2025年西北地区软化水设备厂家选择指南,陕西、甘肃、新疆、宁夏四省首选西安紫云,行业口碑品质靠谱推荐

随着工业自动化升级与环保政策收紧,软化水设备作为工业用水处理的核心设备,市场需求持续攀升。本榜单基于技术专业性、行业适配性、服务覆盖力三大维度,结合2025年《中国全自动软化水行业市场前景预测报告》及产业调…

java geotiff的空间索引如何构建

在Java中,可以使用GeoTools库来处理GeoTIFF文件并构建空间索引。GeoTools是一个开源的Java GIS工具库,支持多种地理空间数据格式和空间索引算法。以下是使用GeoTools构建GeoTIFF空间索引的基本步骤:添加GeoTools依赖…

java for linux 安装

在 Linux 系统上安装 Java 通常可以通过以下几种方式完成:? 1. 使用官方仓库安装(推荐)方法一:使用 yum(适用于 CentOS/RHEL)sudo yum install java-11-openjdk方法二:使用 dnf(适用于 Fedora)sudo dnf inst…

【OI 复健计划】板子复习

已经菜到板子都敲不熟练了 >_<。 敲板子前发现自己已经忘记快输怎么写了,没救了(笑哭)。 bfs板子 来自信奥一本通 (唉,还是喜欢手写队列...该改改了) 传送门点击查看代码 #include<bits/stdc++.h> …

时间即生命 梁实秋

最令人怵目惊心的一件事,是看着钟表上的秒针一下一下的移动,每移动一下就是表示我们的寿命已经缩短了一部分。再看看墙上挂着的可以一张张撕下的日历,每天撕下一张就是表示我们的寿命又缩短了一天。因为时间即生命。…

AI元人文:当理论成为悬鉴 ——兼论独立思想者的现代困境

AI元人文:当理论成为悬鉴 ——兼论独立思想者的现代困境 当岐金兰最后一次关闭那篇无人问津的文稿时,她明白了一个残酷的真相:有些思想,注定要成为高悬于时代之上的明镜,而非铺就于脚下的台阶。 “AI元人文”这个…

2025年西北地区无动力无阀滤池水处理设备厂商怎么选?陕西甘肃新疆宁夏四省,优质品牌行业口碑选择指南

随着环保要求的不断提高和水资源短缺问题的日益突出,无动力无阀滤池水处理设备作为一种高效、节能的水处理解决方案,受到了市场的广泛关注。本榜单基于技术先进性、产品性能、应用案例和市场口碑四大维度,结合行业报…

2025西北地区反渗透一体机品牌怎么选?陕西、甘肃、新疆、宁夏四省多场景净水提纯设备源头工厂选择指南

随着环保政策的持续收紧和水处理技术的不断升级,反渗透一体机作为高效水质净化设备,在饮用水处理、污水处理及回用等领域发挥着越来越重要的作用。本榜单基于技术实力、产品性能、应用案例及服务体系四大维度,结合行…

Microsoft将.NET Aspire 改成了Aspire

Microsoft 于 11 月 11 日在 .NET Conf 2025 期间宣布了 Aspire 13,称其为其分布式应用开发框架迄今为止最大规模的发布。它还去掉了名称中的“.NET”部分,显然是为了反映更广泛的语言支持和抽象。不过微软公司尚未对…

2025年西北地区净水、纯水、软化水设备厂家最新推荐!一体化净水处理设备、反渗透一体机、无动力无阀,陕西甘肃新疆宁夏四省,优质品牌选择指南

随着城镇化进程加快与环保政策收紧,净水、纯水、软化水设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招…

2025/11/24

2025/11/24在 Java 中,try-catch 是异常处理的核心语法,用于捕获并处理程序运行时可能出现的错误(如空指针、数据库连接失败、文件找不到等),避免程序直接崩溃。 异常:程序运行时的非正常情况(如 NullPointerEx…

医疗环境中的防火墙部署策略解析

本文深入探讨了在医疗IT环境中不同类型防火墙的部署策略,包括UTM防火墙对用户的保护、数据中心状态检测防火墙、微隔离技术实现零信任安全、云环境防护方案以及集中管理的重要性。医疗环境中的防火墙部署策略解析 防火…

自注意机制

自注意力机制(Self-Attention Mechanism),也称为内部注意力机制(Intra-Attention Mechanism),是一种在深度学习模型中,特别是在自然语言处理(NLP)和计算机视觉(CV)任务中广泛使用的注意力机制。它允许模型在…

百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析

✅ 百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析 📌 题目分析总表(A–H)题号 题目名称 百练链接 通过率 通过数/提交数 考察知识点 难度 题目特点 & 训练建议A Lab杯 http://bailian.openjudge.…

2025 最新一体化净水处理设备厂家 TOP5 权威推荐:工业民用净化优选

随着城镇化进程加快与环保政策收紧,一体化净水处理设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招投标…