jdbc如何处理事务
Connection提供了事务处理的方法,通过调用setAutoCommit(false)可以设置手动提交事务;当事务完成后用commit()显式提交事务;如果在事务处理过程中发生异常则通过rollback()进行事务回滚。除此之外,从JDBC 3.0中还引入了Savepoint(保存点)的概念,允许通过代码设置保存点并让事务回滚到指定的保存点。
JDBC事务
在JDBC中处理事务,都是通过Connection完成的。
同一事务中所有的操作,都在使用同一个Connection对象。
①JDBC中的事务
Connection的三个方法与事务有关:
- setAutoCommit(boolean):设置是否为自动提交事务,如果true(默认值为true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置为false,那么相当于开启了事务了;con.setAutoCommit(false) 表示开启事务。
- commit():提交结束事务。
- rollback():回滚结束事务。
JDBC处理事务的代码格式:

try{
con.setAutoCommit(false);//开启事务
......
con.commit();//try的最后提交事务
} catch() {
con.rollback();//回滚事务
}

示例:

1 public class AccountDao {
2 /*
3 * 修改指定用户的余额
4 * */
5 public void updateBalance(Connection con, String name,double balance) {
6 try {
7 String sql = "UPDATE account SET balance=balance+? WHERE name=?";
8 PreparedStatement pstmt = con.prepareStatement(sql);
9 pstmt.setDouble(1,balance);
10 pstmt.setString(2,name);
11 pstmt.executeUpdate();
12 }catch (Exception e) {
13 throw new RuntimeException(e);
14 }
15 }
16 }


1 import cn.itcast.jdbc.JdbcUtils;
2 import org.junit.Test;
3 import java.sql.Connection;
4 import java.sql.SQLException;
5
6 public class Demo1 {
7 /*
8 * 演示转账方法
9 * 所有对Connect的操作都在Service层进行的处理
10 * 把所有connection的操作隐藏起来,这需要使用自定义的小工具(day19_1)
11 * */
12 public void transferAccounts(String from,String to,double money) {
13 //对事务的操作
14 Connection con = null;
15 try{
16 con = JdbcUtils.getConnection();
17 con.setAutoCommit(false);
18 AccountDao dao = new AccountDao();
19 dao.updateBalance(con,from,-money);//给from减去相应金额
20 if (true){
21 throw new RuntimeException("不好意思,转账失败");
22 }
23 dao.updateBalance(con,to,+money);//给to加上相应金额
24 //提交事务
25 con.commit();
26
27 } catch (Exception e) {
28 try {
29 con.rollback();
30 } catch (SQLException e1) {
31 e.printStackTrace();
32 }
33 throw new RuntimeException(e);
34 }
35 }
36 @Test
37 public void fun1() {
38 transferAccounts("zs","ls",100);
39 }
40 }

jdbc如何处理事务的更多相关文章
- Spring总结——AOP、JDBC和事务的总结
1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP ...
- 【JDBC】事务的使用
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重 事务 ...
- MySql事务及JDBC对事务的使用
一 .事务的几个重要特性 1. 原子性 事务内的每个内容不可分割,是一个统一的整体.或同时进行或同时消亡. 2.一致性 事务执行前和事务执行后,状态都是统一的.如A转B 100元,A和B数据总额度没有 ...
- JDBC 之 事务
1.概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功. 2.数据库开启事务的命令dtl: Start transaction开启事务 Rollback回滚事务(撤销) ...
- JDBC之事务隔离级别以及ACID特性
JDBC之事务隔离级别以及ACID特性 事务隔离级别: 1.更新遗失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有 ...
- 事务之使用JDBC进行事务的操作2
本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...
- JDBC控制事务
概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...
- SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?
SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证? 1, MI01 create a physical inventory document, 2, MI04 to inpu ...
- JDBC进行事务管理
JDBC进行事务管理 事务的四个特征:原子性 : 是指事务中包含的操作都被看做是一个逻辑单元一致性: 开始前和结束后数据库都处于一致性状态隔离性: 对数据库修改的多个事务是彼此隔离的持久性 事务完成之 ...
随机推荐
- 自定义View(一),初识自定义View
看了无数资料,总结一下自定义View 先明白一个自定义View的三大流程 onMeasure() 测量,决定View的大小 onLayout() 布局,决定View在ViewGroup中的位置 onD ...
- linux系统查看系统内存和硬盘大小
1. 查看系统运行内存 free -m free -g(Gb查看) cat /proc/meminfo 2. 查看硬盘大小 df -hl
- 瑞克和莫蒂|S3E03 Rick为什么要把自己变成一根腌黄瓜?
给尚未入坑Rick and Morty的小伙伴们为一点背景知识 S3E1在说什么? rick从监狱里回来,顺手搞垮了统治地球的银河联邦政府.Jerry因此丢了工作,非常不高兴.于是向Beth质问 ...
- scrapy框架用CrawlSpider类爬取电影天堂.
本文使用CrawlSpider方法爬取电影天堂网站内国内电影分类下的所有电影的名称和下载地址 CrawlSpider其实就是Spider的一个子类. CrawlSpider功能更加强大(链接提取器,规 ...
- E. Little Pony and Expected Maximum(组合期望)
题目描述: Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megaby ...
- python笔记36-装饰器之wraps
前言 前面一篇对python装饰器有了初步的了解了,但是还不够完美,领导看了后又提出了新的需求,希望运行的日志能显示出具体运行的哪个函数. __name__和doc __name__用于获取函数的名称 ...
- linux查看文件相关命令
通过命令+文件名查看内容.如下命令可以查看. 1,cat:由第一行开始显示文件内容:一次性显示文件所有内容 2,tac:从最后一行开始显示,可以看出tac与cat字母顺序相反:一次性显示文件所有内容, ...
- LightOJ - 1322 - Worst Case Trie(DP)
链接: https://vjudge.net/problem/LightOJ-1322 题意: In Computer Science Trie or prefix tree is a data st ...
- urql 高度可自定义&&多功能的react graphql client
urql 是一个很不错的graphql client,使用简单,功能强大,通过exchanges 实现了完整的自定义特性 通过urql 的exchanges 我们可以实现灵活的cache策略 参考资料 ...
- 使用localstorage.setItem()存储对象
使用localstorage.setItem(name,value)存储JSON对象时会发现浏览器存储的内容为[object,object],并不是我们想要的内容,这是因为我们在存储的时候没有进行类型 ...