- 浏览: 43854 次
- 性别:
- 来自: 深圳
文章分类
最新评论
private Connection conn = null;
private PreparedStatement ps = null;
try{
conn.setAutoCommit(false); //将自动提交设置为false
ps.executeUpdate("修改SQL"); //执行修改操作
ps.executeQuery("查询SQL"); //执行查询操作
conn.commit(); //当两个操作成功后手动提交
} catch (Exception e) {
conn.rollback(); //一旦其中一个操作出错都将回滚,使两个操作都不成功
e.printStackTrace();
}
JDBC对事务的支持体现在三个方面:
1.自动提交模式(Auto-commit mode):Connection提供了一个auto-commit的属性来指定事务何时结束。当auto-commit为true时,当每个独立SQL操作的执行完毕,事务立即自动提交,也就是说每个SQL操作都是一个事务。一个独立SQL操作什么时候算执行完毕,JDBC规范是这样规定的:对数据操作语言(DML,如insert,update,delete)和数据定义语言(如create,drop),语句一执行完就视为执行完毕。对select语句,当与它关联的ResultSet对象关闭时,视为执行完毕。对存储过程或其他返回多个结果的语句,当与它关联的所有ResultSet对象全部关闭,所有update count(update,delete等语句操作影响的行数)和output parameter(存储过程的输出参数)都已经获取之后,视为执行完毕。当auto-commit为false时,每个事务都必须显示调用commit方法进行提交,或者显示调用rollback方法进行回滚。auto-commit默认为true。
2.事务隔离级别(Transaction Isolation Levels):
a.TRANSACTION_NONE JDBC驱动不支持事务
b.TRANSACTION_READ_UNCOMMITTED 允许脏读、不可重复读和幻读
c.TRANSACTION_READ_COMMITTED 禁止脏读,但允许不可重复读和幻读
d.TRANSACTION_REPEATABLE_READ 禁止脏读和不可重复读,单运行幻读。
e.TRANSACTION_SERIALIZABLE 禁止脏读、不可重复读和幻读。
3.保存点(SavePoint):JDBC定义了SavePoint接口,提供在一个更细粒度的事务控制机制。当设置了一个保存点后,可以rollback到该保存点处的状态,而不是rollback整个事务。Connection接口的setSavepoint和releaseSavepoint方法可以设置和释放保存点。
JDBC规范虽然定义了事务的以上支持行为,但是各个JDBC驱动,数据库厂商对事务的支持程度可能各不相同。如果在程序中任意设置,可能得不到想要的效果。为此,JDBC提供了DatabaseMetaData接口,提供了一系列JDBC特性支持情况的获取方法。比如,通过DatabaseMetaData.supportsTransactionIsolationLevel方法可以判断对事务隔离级别的支持情况,通过DatabaseMetaData.supportsSavepoints方法可以判断对保存点的支持情况。
private PreparedStatement ps = null;
try{
conn.setAutoCommit(false); //将自动提交设置为false
ps.executeUpdate("修改SQL"); //执行修改操作
ps.executeQuery("查询SQL"); //执行查询操作
conn.commit(); //当两个操作成功后手动提交
} catch (Exception e) {
conn.rollback(); //一旦其中一个操作出错都将回滚,使两个操作都不成功
e.printStackTrace();
}
JDBC对事务的支持体现在三个方面:
1.自动提交模式(Auto-commit mode):Connection提供了一个auto-commit的属性来指定事务何时结束。当auto-commit为true时,当每个独立SQL操作的执行完毕,事务立即自动提交,也就是说每个SQL操作都是一个事务。一个独立SQL操作什么时候算执行完毕,JDBC规范是这样规定的:对数据操作语言(DML,如insert,update,delete)和数据定义语言(如create,drop),语句一执行完就视为执行完毕。对select语句,当与它关联的ResultSet对象关闭时,视为执行完毕。对存储过程或其他返回多个结果的语句,当与它关联的所有ResultSet对象全部关闭,所有update count(update,delete等语句操作影响的行数)和output parameter(存储过程的输出参数)都已经获取之后,视为执行完毕。当auto-commit为false时,每个事务都必须显示调用commit方法进行提交,或者显示调用rollback方法进行回滚。auto-commit默认为true。
2.事务隔离级别(Transaction Isolation Levels):
a.TRANSACTION_NONE JDBC驱动不支持事务
b.TRANSACTION_READ_UNCOMMITTED 允许脏读、不可重复读和幻读
c.TRANSACTION_READ_COMMITTED 禁止脏读,但允许不可重复读和幻读
d.TRANSACTION_REPEATABLE_READ 禁止脏读和不可重复读,单运行幻读。
e.TRANSACTION_SERIALIZABLE 禁止脏读、不可重复读和幻读。
3.保存点(SavePoint):JDBC定义了SavePoint接口,提供在一个更细粒度的事务控制机制。当设置了一个保存点后,可以rollback到该保存点处的状态,而不是rollback整个事务。Connection接口的setSavepoint和releaseSavepoint方法可以设置和释放保存点。
JDBC规范虽然定义了事务的以上支持行为,但是各个JDBC驱动,数据库厂商对事务的支持程度可能各不相同。如果在程序中任意设置,可能得不到想要的效果。为此,JDBC提供了DatabaseMetaData接口,提供了一系列JDBC特性支持情况的获取方法。比如,通过DatabaseMetaData.supportsTransactionIsolationLevel方法可以判断对事务隔离级别的支持情况,通过DatabaseMetaData.supportsSavepoints方法可以判断对保存点的支持情况。
发表评论
-
java注解
2019-03-27 13:42 0https://blog.csdn.net/mrs_wu/a ... -
jsonp原理
2019-03-26 15:39 0https://blog.csdn.net/hansexpl ... -
BufferedImage在linux下createGraphics卡住的问题
2019-02-28 17:30 0BufferedImage在linux下createGra ... -
记第二次面试(平安)
2019-02-21 22:31 01.JVM调优 2.线程池,几种线程的帮助类 3.Has ... -
ueditor处理webp图片
2019-02-28 17:26 671今天运营MM突然说,资讯管理功能用不了,从 ... -
记一次面试(金地)
2019-01-28 09:40 0首先是笔试部分: 1. ... -
java io
2018-11-28 23:43 0https://www.cnblogs.com/hoojj ... -
Java 集合详解
2018-11-26 15:27 0https://www.cnblogs.com/ysocean ... -
Redis分布式锁的正确实现方式
2018-10-06 10:44 509分布式锁一般有三种实现方式: 1. 数据库乐观锁; 2 ... -
在 CentOS7 上安装 Tomcat9
2018-01-30 19:25 3556 下载 apache-tomcat-9.0.0.M4.t ... -
在CentOS7上安装JDK1.8
2018-01-30 18:50 3681 通过 SecureCRT 连接到阿里云 CentOS7 ... -
centos7自定义安装redis
2017-12-18 16:26 5351.下载 wget http://download.re ... -
centos7自定义安装mysql5.7
2017-12-15 18:12 4751.查找卸载原有的mysql 方法1 rpm -qa| ... -
centos7 安装nginx
2017-12-13 18:18 3201.解压 tar -xf nginx-1.10.1.ta ... -
mysqldump 每日定时备份
2017-09-25 19:37 608首先编写脚本: date_cur=$(date &quo ... -
centos7 安装nginx
2017-05-15 16:07 01、下载nginx-release包 以CentOS 7为 ... -
读书笔记
2017-04-18 11:31 02017-04-18 1.程序员,这 ... -
centos7下mongodb的安装与配置
2017-04-13 16:59 6911.下载mongodb安装包 https://www.m ... -
服务器迁移心得
2016-11-04 15:22 4801.数据传输直接从源到目标,不要经过自己的电脑,用到的li ... -
svn lock
2016-09-13 10:33 434在网上的解决方案中,往往都是通过Clean up来解决,如下 ...
相关推荐
在"Spring/SpringMVC/MyBatis整合+事务回滚"的主题中,我们将深入探讨如何将这三个框架整合起来,并实现事务的回滚功能。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更...
在这个“spring简单实例 事务回滚”的案例中,我们将深入探讨Spring如何处理事务回滚,以及它是如何在Java源码层面实现这一功能的。 首先,让我们理解什么是事务。在数据库操作中,事务是确保数据一致性的重要机制...
此外,JDBC事务管理也是重要一环。通过`Connection.setAutoCommit(false)`禁用自动提交,然后在一组操作完成后调用`Connection.commit()`提交事务,或者在发生错误时调用`Connection.rollback()`回滚。 对于初学者...
JAVA设置手动提交事务、回滚事务、提交事务的操作详解 本文主要介绍了JAVA设置手动提交事务、回滚事务、提交事务的操作,涉及到事务的自动提交、手动提交、回滚和提交等操作。以下是对这些操作的详细解释和示例代码...
在Java编程中,Oracle...总的来说,Oracle在Java中的事务处理和异常回滚是通过JDBC接口实现的,它保证了数据库操作的原子性、一致性、隔离性和持久性。理解并熟练掌握这些概念对于开发健壮的Java应用程序至关重要。
- JDBC支持事务的提交、回滚和隔离级别设置,通过`Connection`对象的`commit()`、`rollback()`和`setTransactionIsolation()`方法实现。 6.批处理: - 对于多条相似的SQL语句,批处理可以提高性能。`addBatch()`...
5. **Transaction Management**: JDBC支持事务处理,通过`Connection`对象的`setAutoCommit()`和`commit()`/`rollback()`方法控制事务的开始、提交或回滚。 以下是一个简单的Java JDBC Oracle代码示例,展示了如何...
7. **事务管理**:JDBC支持事务,可以通过`Connection`对象的`setAutoCommit(false)`来禁用自动提交,手动控制事务的开始、提交和回滚。 8. **批处理**:对于大量相似的SQL操作,可以使用`Statement`的`addBatch()`...
本项目"javajdbc宠物商店-Mysql数据库"是基于Java JDBC实现的一个宠物商店管理系统的数据库部分,它提供了与MySQL数据库交互的能力。在这个项目中,我们将深入探讨以下几个核心知识点: 1. **JDBC API**: JDBC API...
总结起来,Java JDBC连接测试代码涉及的主要知识点有:JDBC API的使用、数据库连接的建立、SQL语句的执行、查询结果的处理以及事务管理。通过分析和理解这些代码,开发者可以更好地掌握Java与数据库的交互。
在Java JDBC中,我们可以使用Connection对象的setAutoCommit(false)方法来关闭自动提交,然后手动控制事务的开始(startTransaction)、提交(commit)和回滚(rollback)。例如,在转账操作中,如果两个账户的扣款...
6. **事务管理**:JDBC支持事务控制,包括`Connection`对象的`setAutoCommit()`关闭自动提交,以及`commit()`和`rollback()`方法提交或回滚事务。 ### JDBC优化技巧 1. **批处理**:通过`addBatch()`方法添加多个...
Java JDBC提供了对事务的支持,可以使用Connection对象的commit()和rollback()方法来提交或回滚事务。在学生成绩管理系统中,如果一组相关操作(如添加新成绩)必须全部成功或全部失败,就需要使用事务来确保数据的...
JDBC还支持事务处理,可以使用Connection对象的`setAutoCommit(false)`禁用自动提交,然后通过`commit()`或`rollback()`控制事务的提交和回滚。 在实际应用中,为了更好地管理数据库连接,通常会使用连接池(例如C3...
总结来说,Java的JDBC提供了强大的事务管理能力,包括设置保存点以实现部分回滚。这对于处理复杂的业务逻辑和异常处理是非常有用的。正确理解和使用这些功能,可以帮助开发人员编写出更加健壮和灵活的数据库应用程序...
通过设置Connection的自动提交为false,我们可以手动控制事务的提交或回滚。 7. **异常处理** 在进行数据库操作时,务必捕获并处理可能出现的SQLException,确保程序的健壮性。 总结,Java JDBC提供了全面的...
JDBC支持事务控制,包括开启事务、提交事务、回滚事务。通过Connection对象的`setAutoCommit(false)`关闭自动提交,手动调用`commit()`或`rollback()`。 7. **GUI与JDBC结合**: 在GUI环境中,如Swing或JavaFX,...
总结,JDBC事务是Java与数据库交互时的关键部分,通过理解事务的概念、级别以及如何在JDBC中控制事务,可以编写出更加健壮、安全的数据库应用程序。在实际项目中,我们还需要关注异常处理、资源管理和事务策略的选择...
4. **事务支持**:JDBC支持事务管理,包括事务的开始、提交和回滚,确保数据的一致性和完整性。 #### 二、JDBC 连接数据库步骤 1. **注册驱动**:通过`Class.forName("com.mysql.jdbc.Driver");`加载数据库驱动...
如果出现异常,我们将回滚事务。 5. **示例使用** 下面是如何在你的代码中使用`JDBCUtil`的例子: ```java JDBCUtil.executeTransaction(conn -> { String sql = "INSERT INTO yourTable VALUES (?, ?)"; try ...