定义:

  数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

概要:
  一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
  1. 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
  2. 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
  当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
  但在现实情况下,失败的风险很高。在一个数据库事务的执行过程中,有可能会遇上事务操作失败、数据库系统/操作系统失败,甚至是存储介质失败等情况。这便需要DBMS对一个执行失败的事务执行恢复操作,将其数据库状态恢复到一致状态(数据的一致性得到保证的状态)。为了实现将数据库状态恢复到一致状态的功能,DBMS通常需要维护事务日志以追踪事务中所有影响数据库数据的操作。
事务命令: 

  connection.setAutoCommit(false);开启事务

  connection.rollback()  回滚事务

  connect.commit()   提交事务

案例代码:

import cn.guangming.demo.JdbcUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* 模拟银行的转账业务
* */
public class Transcation {
public static void main(String[] args) {
Connection connection=null;
PreparedStatement preparedStatement=null;
try {
//1.获取连接
connection = JdbcUtils.getConnection();
//2.开启事务
connection.setAutoCommit(false);
//3.获取preparedstatement
preparedStatement = connection.prepareStatement("UPDATE coount SET money =money-? WHERE sname=?");
//4.使用preparedstatement两次更新操作
preparedStatement.setDouble(1,500);
preparedStatement.setString(2,"dudu");
preparedStatement.executeUpdate();
System.out.println(11/0); preparedStatement=connection.prepareStatement("UPDATE coount SET money =money-? WHERE sname=?");
preparedStatement.setDouble(1,500);
preparedStatement.setString(2,"jiujiu");
preparedStatement.executeUpdate();
//提交事务
connection.commit();
System.out.println("转账成功");
} catch (Exception e) {
//事务回滚
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("转账失败");
}finally {
//释放资源
JdbcUtils.close(preparedStatement,connection);
}
}
}

JDBC事务的处理-----模拟银行转账业务的更多相关文章

  1. Jdbc来操作事物 完成模拟银行的转账业务

    创建JDBC工具类 package cn.aa4_2.JDBCUtils; import java.io.FileReader; import java.io.IOException; import ...

  2. 27Spring_的事务管理_银行转账业务加上事务控制_基于tx.aop进行声明式事务管理

    上一篇文章中,银行转账业务没有使用事务,会出现问题,所以这篇文章对上篇文章出现的问题进行修改. 事务 依赖 AOP , AOP需要定义切面, 切面由Advice(通知) 和 PointCut(切点) ...

  3. CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)

    JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction ma ...

  4. 春天JDBC事务管理

    JDBC事务管理 春天提供编程式的事务管理(编程式事务管理)与声明式的事务管理(声明式事务management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管 ...

  5. MySql中的事务、JDBC事务、事务隔离级别

    一.MySql事务 之前在Oracle中已经学习过事务了,这个东西就是这个东西,但是在MySql中用法还是有一点不同,正好再次回顾一下. 先看看MySql中的事务,默认情况下,每执行一条SQL语句,都 ...

  6. JDBC事务控制管理(转载)

    JDBC事务控制管理 转载于 2018年01月26日 15:46:11 1.事务 (1)事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐, ...

  7. day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

    day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...

  8. JDBC事务之例子篇

    上一篇随笔记了一些有关JDBC事务管理的理论知识.这篇来看例子(主要怕一篇随笔装所有东西太长了然后分开呵呵) 一般讲事务管理的,都是拿转钱来当例子的,嗯没错我们这也是. 这个是数据库中的t_accou ...

  9. JTA和JDBC事务

    一般情况下,J2EE应用服务器支持JDBC事务.JTA事务.容器管理事务.这里讨论JTA和JDBC事务的区别.这2个是常用的DAO模式事务界定方式.JDBC 事务 JDBC 事务是用 Connecti ...

随机推荐

  1. JavaScrip(三)JavaScrip变量高级操作(字符串,数组,日期)

    一:字符串 charAt() 返回指定位置的字符 indexof() 返回指定字符串首次出现的位置 replace() 替换指定的字符 concat() 连接两个或多个字符串 substr(start ...

  2. mongoose的笔记

    本文地址转载自:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操 ...

  3. 重载方法写delete请求

    #encoding=utf-8#__author__="Lanyangyang" import unittestimport requestsimport json # This ...

  4. ui-router ng-router

    开发中常用ui-router来设置路由: ui-router使用很简单,延续了之前ngRoute的特点. 1.首先得注入ui.router模块. 接下来就是简单的配置 2.$stateProvider ...

  5. <HBase><Scan>

    Overview The Scan operation for HBase. Scan API All operations are identical to Get with the excepti ...

  6. JavaWeb:指令标识

    指令标识 一.介绍 指令标识主要用于设定完整的JSP页面范围内有效的相关的信息,它是被服务器解释并执行,但是它不会在页面中显示. 二.语法格式 <%@ 指令名 属性1=“属性值1” 属性2=“属 ...

  7. Android SurfaceView内容获取

    Android SurfaceView内容获取 这几天在做一个Android的小项目,项目中需要使用到SurfaceView来显示相机捕获的内容,同时还有一个SurfaceView用于绘制一些辅助线, ...

  8. chromium ⑤

    我们都知道chromium是用webkit完成页面显示的,   那么chromium是怎样集成和封装webkit的呢?   是怎样将webkit整合到自己的框架中,并将一个页面渲染出来的?   这篇我 ...

  9. phpexcel 的使用

    首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...

  10. 莫烦tensorflow(1)-训练线性函数模型

    import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...