JDBC编程的事务处理
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,一、事务的基本概念数据库是一个多用户使用的共享资源。当多个用户并发地存取数据的时候,在数据库中就会产生多个用户同时存取同一数据的情况。若对并发操作不加控制,就可能会产生读取和存储不正确的数据,破坏数据
千家信息网最后更新 2025年11月11日JDBC编程的事务处理
一、事务的基本概念
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据的时候,在数据库中就会产生多个用户同时存取同一数据的情况。若对并发操作不加控制,就可能会产生读取和存储不正确的数据,破坏数据的一致性。
而事务是并发控制的基本单位。所谓事务,即一个操作序列。这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。比如银行转账工作:从一个账户扣款,并使用另一个账户收款,这两个操作要么都执行,要么都不执行,因此应该把它们看作是一个事务。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据的一致性。
对于编程人员来说,可以把数据库事务看作是一组sql语句,这组sql语句是一个逻辑工作单元,它们是不可分割的,它们的执行结果应该作为一个整体永久修改一个数据库的内容或者作为一个整体取消对数据库的修改。
二、事务的四个基本特征
1.原子性
原子性是指事务中包含的操作都被看作是一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。这也意味着事务中的所有元素作为一个整体提交或回滚。事务的所有元素是不可分割的,是一个完整的操作。
2.一致性
一致性是指事务开始之前和事务结束以后数据库都处于一致性状态,数据库的完整性约束没有被破坏。
3.隔离性
隔离性是指对数据库进行修改的多个事务是彼此隔离的。这说明事务必须是独立的,不应该以任何形式影响其他事务
4.持久性
持久性是指事务完成之后对于数据库的影响是永久的,该修改真实地修改了数据库,即使数据库出现故障也会一直保留。
三、与SQL相关的事务语句
开始事务:BEGIN TRANSACTION
提交事务:COMMIT TRANSATION
回滚事务:ROLLBACK TRANSATION
package com.eduask.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;/*将要测试的逻辑 保存一个用户Tom的基本信息和Tom的地址信息 分别通过两个java方法插入到用户表和地址表中 在插入地址表的时候人为造成一个异常 观察结果 */public class TransactionTest { //创建一个getConnection()用来获取数据库的连接 public static Connection getConnection(){ Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdemo","root","root"); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void insertUserData(Connection conn) throws SQLException{ String sql = "insert into tbl_user(id,name,password,email) " + "values(10,'Tom','123456','tom@gmail.com')"; Statement st = conn.createStatement(); int count = st.executeUpdate(sql); System.out.println("向用户插入了 "+ count + " 条记录"); } public static void insertAddressData(Connection conn) throws SQLException{ String sql = "insert into tbl_address(id,city,country,user_id) " + "values(1,'ShangHai','China','10')"; Statement st = conn.createStatement(); int count = st.executeUpdate(sql); System.out.println("向地址表中插入了 "+ count + " 条记录"); } public static void main(String[] args) { Connection conn = null; try { conn = getConnection(); conn.setAutoCommit(false); insertUserData(conn); insertAddressData(conn); conn.commit(); } catch (SQLException e) { System.out.println("=========捕获到SQL异常========="); e.printStackTrace(); try { conn.rollback();//回滚事务,保证数据库数据的一致性 System.out.println("=========事务回滚成功========="); } catch (Exception e2) { e2.printStackTrace(); } }finally{ try { if (conn != null) { conn.close(); } } catch (Exception e3) { e3.printStackTrace(); } } } }
事务
数据
数据库
一致
一致性
用户
要么
地址
逻辑
不可分割
单位
单元
多个
整体
语句
工作
隔离
成功
两个
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库 怎么不会重复
揭阳戴尔服务器性价比高企业
服务器和通讯机柜有什么区别
上海企顶顶网络技术有限公司
台湾服务器公司虚拟主机
服务器ST C7THJK2
E筋软件开发人员
完善网络安全中的数据加密
关系数据库中的表记录字段的概念
甘肃省网络安全宣传周启动仪式
2020网络安全微视频展览
多节点cdn服务器搭建
遂平县网络安全
服务器林根
胡莱三国2服务器c3
三军网络安全
网络安全与微信使用
专技天下网络安全试卷8
新软件开发公司简介
江南燕网络安全
360网络安全风向
上海企顶顶网络技术有限公司
d3服务器
图像流服务器
显示数据库所有表
黄浦区信息软件开发
联想服务器nctc检测报告
网络安全服务手抄报画
暑期防溺水与网络安全
数据库的主键可以改吗