JDBC对数据库的事务操作

【Java数据库】使用JDBC操作MySQL数据库、Batch批处理 、事务的概念 MySQL 数据库的命令行操作 登陆操作mysql -hlocalhost –uroot –p123456 退出操作exit 数据库操作建库:create database 库名; 卸载库:drop database 库名; 显示所有数据库:show databases; 选择库:use testjdbc; 表操作建表的sql语句 显示库中所有表:show tables; 显示某个表的结构:des... 阅读详情
 

JDBC对数据库的事务操作

                              ginkou.fly  2002-9-4

1.  概述:

在jdbc的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。

2.  特点:
★ 在jdbc中,事务操作缺省是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作,操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回滚。
★ 在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交,倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常;此时就可以在异常捕获时调用rollback()进行回滚。这样做可以保持多次更新操作后,相关数据的一致性,示例如下:

    try {

conn =

DriverManager.getConnection   

("jdbc:oracle:thin:@host:1521:SID","username","userpwd";

       conn.setAutoCommit(false);//禁止自动提交,设置回滚点

       stmt = conn.createStatement();

stmt.executeUpdate(“alter table …”); //数据库更新操作1

stmt.executeUpdate(“insert into table …”); //数据库更新操作2

       conn.commit(); //事务提交

     }catch(Exception ex) {   

         ex.printStackTrace();

         try {

          conn.rollback(); //操作不成功则回滚

          }catch(Exception e) {

e.printStackTrace();

           }

}

 

★      jdbc API支持事务对数据库的加锁,并且提供了5种操作支持,2种加锁密度。

5种支持:

static int TRANSACTION_NONE                = 0;

 →禁止事务操作和加锁。

static  int TRANSACTION_READ_UNCOMMITTED    = 1;

→允许脏数据读写(dirty reads)、重复读写(repeatable reads)和影象读写(phntom 

reads)

static  int TRANSACTION_READ_COMMITTED      = 2;

→禁止脏数据读写(dirty reads),允许重复读写(repeatable reads)和影象读写(phntom reads)

static  int TRANSACTION_REPEATABLE_READ     = 4;

→禁止脏数据读写(dirty reads)和重复读写(repeatable reads),允许影象读写(phntom reads)

static  int TRANSACTION_SERIALIZABLE        = 8;

→禁止脏数据读写(dirty reads)、重复读写(repeatable reads)和允许影象读写(phntom reads)

2种密度:

最后一项为表加锁,其余3~4项为行加锁。

      脏数据读写(dirty reads):当一个事务修改了某一数据行的值而未提交时,另一事务读取了此行值。倘若前一事务发生了回滚,则后一事务将得到一个无效的值(脏数据)。

      重复读写(repeatable reads):当一个事务在读取某一数据行时,另一事务同时在修改此数据行。则前一事务在重复读取此行时将得到一个不一致的值。

      影象读写(phantomreads):当一个事务在某一表中进行数据查询时,另一事务恰好插入了满足了查询条件的数据行。则前一事务在重复读取满足条件的值时,将得到一个额外的“影象“值。

     Jdbc根据数据库提供的缺省值来设置事务支持及其加锁,当然,也可以手工设置:

    setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);

可以查看数据库的当前设置:

    getTransactionIsolation()

需要注意的是,在进行受动设置时,数据库及其驱动程序必须得支持相应的事务操作操作才行。

       上述设置随着值的增加,其事务的独立性增加,更能有效的防止事务操作之间的冲突;同时也增加了加锁的开销,降低了用户之间访问数据库的并发性,程序的运行效率也回随之降低。因此得平衡程序运行效率和数据一致性之间的冲突。一般来说,对于只涉及到数据库的查询操作时,可以采用TRANSACTION_READ_UNCOMMITTED方式;对于数据查询远多于更新的操作,可以采用TRANSACTION_READ_COMMITTED方式;对于更新操作较多的,可以采用TRANSACTION_REPEATABLE_READ;在数据一致性要求更高的场合再考虑最后一项,由于涉及到表加锁,因此会对程序运行效率产生较大的影响。

另外,在oracle中数据库驱动对事务处理的缺省值是TRANSACTION_NONE,即不支持事务操作,所以需要在程序中手动进行设置。

3.  小结

jdbc提供的对数据库事务操作的支持是比较完整的,通过事务操作可以提高程序的运行效率,保持数据的一致性。

JavaBean中使用JDBC方式进行事务处理 JavaBean中使用JDBC方式进行事务处理方案 有详细的事物处理代码 立即下载

相关推荐

别再只会用555了!手把手教你用运放和RC电路搭一个50Hz正弦波信号源(附Multisim仿真文件)

本文详细介绍了如何使用运放LM358和RC电路搭建一个精准的50Hz正弦波信号源,涵盖文氏电桥核心原理、单电源供电解决方案、Multisim仿真及实物调试技巧。通过实战指南和优化建议,帮助电子爱好者快速掌握低频信号生成技术,适用于各种测试和校准场景。

weixin_34116482的博客 364

MySQL | JDBC连接数据库详细教程【全程干货】

如何使用JDBC连接MySQL数据库详细教程

做技术人 · 产优质博客 · 找好工作 3万+

Label Studio + SAM2分割半自动标注与yolo11训练

Label Studio + SAM2分割半自动标注与yolo11训练

schFallingCloud 1408

JAVA(JDBC)学习心得

大

m0_65474726的博客 1054

C# 进程间 双内存共享 高帧率图像传输

演示了两个进程之间通过 双内存共享 的方式, 来实时处理图像,并以高帧率(40~60FPS)传输的基本示例。 进程间内存共享的优点:高性能、低延迟、资源效率高、简单可靠。 适用场景:实时图像处理、大数据传输、多进程协作、实时监控系统,等等。

qianqiansd 1996

山东大学FPGA课程实验一 加法器设计

电子设计自动化与FPGA设计,实验一 加法器设计

2503_91283667的博客 869

详细版的JDBC连接数据库(包括数据库的建立)

首先新建一个连接,我这里已经写好了,我使用的是localhost,用户名:root。3.我们直接用代码实现吧,这里我MySQL用的是HeisiSQL。建完表以后就是建立表的属性信息,也可以查询里面用代码写。建立表里面的相关属性信息代码是这样子的。2.JDBC的常用API。进去之后就是新建数据库了。

m0_52873654的博客 581

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

JDBC连接数据库

JDBC 就是使用Java语言操作关系型数据库的一套API。全称:( Java DataBase Connectivity ) Java 数据库连接, JDBC好处:各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发可随时替换底层数据库,访问数据库的Java代码基本不变。

m0_74890428的博客 1万+

ABAP内表数据导出Excel:OLE、ALV与GUI_DOWNLOAD方案全解析

在企业级应用开发中,数据导出是连接后台系统与前端业务分析的关键桥梁。其核心原理是将结构化数据转换为通用文件格式,以实现跨平台的数据交换与可视化。从技术价值看,一个健壮的导出功能能显著提升数据处理效率,减少人工干预,是衡量系统实用性的重要指标。常见的应用场景包括报表生成、数据交接和临时数据提取。本文聚焦于SAP ABAP开发领域,深入探讨如何将内表数据高效、稳定地导出至Excel,涵盖了OLE自动化、ALV标准导出以及基于CL_GUI_FRONTEND_SERVICES与GUI_DOWNLOAD的通用方案,并

weixin_32715349的博客 321

SpringBoot3 + OAuth2.1实战:5分钟搞定授权码模式(含完整代码)

本文详细介绍了如何在SpringBoot3环境中快速实现OAuth2.1的授权码模式,包括环境配置、核心安全实现及完整代码示例。通过Spring Security集成,开发者可以高效构建企业级安全认证系统,解决版本兼容性问题,提升开发效率。

weixin_29216353的博客 140

数据库JDBC知识概括

数据库JDBC知识概括JDBC概述JDBC程序编写步骤获取数据库连接使用PreparedStatement实现CRUD操作使用Statement操作数据表的弊端使用PreparedStatement资源释放JDBC API小结操作BLOB类型字段批量插入DAO及相关实现类数据库连接池数据库连接池技术多种开源的数据库连接池Apache-DBUtils实现CRUD操作JDBC总结 JDBC概述 JDBC是sun公司提供的一套独立于数据库的通用SQL数据库存取h额操作的公共接口和规范,用来实现与数据库连接的。因此

weixin_41005188的博客 1712

地下管网巡检机器人:基于YOLOv8与UI界面的智能化系统设计与实现

通过YOLOv8模型的目标检测功能结合实时视频流,我们能够实现对地下管网巡检机器人的智能化控制。系统通过图像识别技术帮助巡检人员快速识别管道中的各种缺陷和障碍物,从而提高巡检效率和准确性。未来,我们可以继续优化模型,增加更多的目标类别,并通过强化学习等方法提高机器人的自主巡检能力。此外,随着硬件技术的发展,未来的巡检机器人可能会具备更强的感知能力和更高的智能水平。

YOLO 529

JDBC对数据库的事务操作(转)

  JDBC对数据库的事务操作- -                                       1.  概述:在jdbc的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。2.  特点

思想碎片 - On The Road 2159

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JDBC事务(同时操作数据库多个表)

public class TestTransaction { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { Class.forName("com.mysql.jdbc.Driver"); } catch (Cla

zpatagonia的博客 3717

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

使用jdbc完成对于数据库的操作【事务练习】

package com.bjsxt.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.bjsxt.util....

wyqwilliam的博客 289

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdbc mysql事务_使用JDBC进行数据库的事务操作(2)

本篇将讲诉如何使用JDBC进行数据库有关事务的操作。在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作。似乎事务和批处理都可以一次同时执行多条SQL命令,但是事务是如果某一条SQL出错,则前面已经执行过的SQL全部都将回滚;而批处理中某一条SQL出错,那么这条出错的SQL要么会抛出个异常,要么以一个代表出错的值返回,已经执行过的SQL不受影响,至于...

weixin_42455621的博客 221

java通过JDBC操作MySQL数据库和事务

注意: 本次实例使用的是MySQL8.0 MySQL8.0之后的要加上serverTimezone=UTC 加载驱动一般使用com.mysql.cj.jdbc.Driver jar包已上传 import java.sql.*; /** * @author 小新 * @date 2020/11/6 - 16:24 */ public class MySqlCon { public static void main(String[] args) throws ClassNotFoundExcep

小新的笔记博客 425

数据库操作(事务,JDBC)

1.数据库多表之间的关系 2.上述关系之间的范式 注意:一对多的关系是在多的一方建立外键,指向一的一方的主键 注意:多对多的关系中,需要建立第三个表,其中至少有两个内容,且分别指向另外两个表的主键 创作唯一外键的时候,注意要求是外键需要建立唯一外键(unique) ...

ggdzgz的博客 288

JDBC操作事务, 数据库连接池

JDBC操作事务, 数据库连接池 JDBC操作事务 ACID原则 原子性:要么全部完成,要么都不完成 一致性:总数不变 隔离性:多个进程互不干扰 持久性:一旦提交不可逆,持久化到数据库了 隔离性的问题: 脏读:一个事务读取了另一个没有提交的事务 不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了改变 虚读(幻读):在一个事务内,读取到了别人插入的数据,导致前后读出的数据不一致 package com.JDBC.www; import java.sql.Connection; import j

weixin_45970171的博客 190

JDBC数据库事务,同一连接的更新事务操作转账避免数据不一致

execute、 executeQuery 、 executeUpdata 数据库事务 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 一组逻辑操作单元:一个或多个DML操作 事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个十五中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。 为确保数据库中数据的一致性,数

qq_39295860的博客 371

JDBC数据库增删改查操作及事务操作

JDBC数据处理层面数据库常用增删改查操作 全文以Mysql中的User表为例 create table `User`( id int(6), username varchar(20), password varchar(20), realname varchar(20), email varchar(20), birthday date, gendar char(1) ) 数据库常用操作:增删...

Zldz33的博客 858

JDBC基础、数据库操作、事务操作和简单工具类的使用

JDBC一、JDBC基础1.1 概念1.2 使用步骤1.3 JDBC中各组件对象的详解1.3.1 DriverManager1.3.2 Connection1.3.3 Statement1.3.4 ResultSet1.3.5 PreparedStatement三、简单的数据库操作3.1 JDBC的书写步骤3.2 增操作 insert3.3 删操作 delete3.4 改操作 update3.4 查操作 select3.5 执行DDL四、事务五、JDBC工具类的使用 一、JDBC基础 1.1 概念 JD

璃尔 ° 的博客 872
下一篇: JSP标记学习笔记
itpride
博客等级 码龄25年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值