JDBC编程的事务处理
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一、事务的基本概念数据库是一个多用户使用的共享资源。当多个用户并发地存取数据的时候,在数据库中就会产生多个用户同时存取同一数据的情况。若对并发操作不加控制,就可能会产生读取和存储不正确的数据,破坏数据
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网科技有限公司
中智农互联网科技
亿人帮互联网科技有限公司
互联网最新的科技
互联网扶贫科技
互联网科技金融公司
艾特科技互联网
碳银互联网科技有限公司
兼蜜互联网科技
互联网科技大会
哈尔滨新华互联网科技
华脉科技工业互联网产品
济南华为互联网科技产业总部基地
广州恒生互联网科技有限
互联网5g黑科技有哪些
上海科技产业互联网平台
雨阳互联网卡科技有限公司
广州富喜互联网络科技
互联网营销推广黑科技
广州有谷有贝互联网科技有限公司
奔汉互联网科技
太原新华互联网科技学校怎么样
成都互联网科技公司100强
中化能源互联网科技招聘
互联网科技大奖都有哪些公司
互联网在线教育科技创业
互联网科技大赛获奖感言
本届互联网大会上的黑科技
吉林省码上互联网科技电话
唐山双旺合互联网科技产业园