JDBC编程之事务的使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html
关于事务的理论知识、ACID特性等等,网上太多了,在此不一一重复。本文主要着重 事务 这个工具在实际编程中是怎么实现的。
在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作,每一个SQL语句都被认为是一个完整的事务处理。
而我们想要实现事务,即:执行多句SQL语句,再最终一起提交或在出错时撤销(SQL语句要么提交,要么撤销。提交则对数据库造成永久性的影响,撤销则事务内的sql语句相当于没有执行)。
那么我们要做的就是:取消掉每一个SQL语句执行后自动提交这个属性,并设立一个开关(commit())执行一些列语句的同一提交操作。
取消SQL语句自动提交的方法有:
con.setAutoCommit(false):取消自动提交。则从此处开始,下面的一系列SQL语句除非遇到commit()命令,都不提交。
具体的JDBC编程中事务的应用步骤如下:
1) JDBC对事务的管理交由Connection,都是由Connection的对象方法实现的;
2) 首先关闭自动提交,开启事务:void Connection.setAutoCommit(false); // false表示关闭自动提交
3) 然后就是事务中包含的一系列SQL语句
4) 提交事务:con.commit(); // 显式提交
5) 回滚:如果在事务执行过程中出错(用try-catch语句捕捉),则在错误处理语句中显式回滚:con.rollback();
6) 中间点:一般的事务回滚是回滚到事务开始之前,但是也可以只回滚到事务中的某个中间点。
设置中间点
i. Savepoint Connection.setSavepoint(); // 在事务的某个位置设置一个中间点,该中间点没有命名,使用系统默认的命名
ii. Savepoint setSavepoint(String name); // 给中间点命名
iii. 回滚到指定的中间点:connection.rollback(Savepoint savepoint); // 回滚到指定的中间点
代码样例:
try {
conn.setAutoCommit(false);
String sql1="。。。";
stmt.executeUpdate(sql);
String sql2="。。。";
stmt.executeUpdate(sq2);
String sql3="。。。";
stmt.executeUpdate(sq3);
conn.commit();
} catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) { e1.printStackTrace();
}
JDBC编程之事务的使用教程的更多相关文章
- Java基础教程:JDBC编程
Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...
- JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/5876951.html 在JDBC编程中,常用Statement.PreparedStatement 和 ...
- Java JDBC编程套路教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html 学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程 ...
- Java数据库连接——JDBC调用存储过程,事务管理和高级应用
一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...
- JavaEE之JDBC编程[详解]
1.数据库简介 数据库(DB,Data Base ) 数据库管理系统(DBMS,Data Base Management System) 关系型数据库(RDB) 关系型数据库管理系统(RDBMS) S ...
- 第十三章.MySQL数据库与JDBC编程(下)
JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: publi ...
- JAVA JDBC(存储过程和事务管理)
1.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...
- JDBC编程理论知识(1)
1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC 2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组 ...
- JDBC编程之程序优化
-----------------siwuxie095 首先下载 MySQL 的 JDBC 驱动,下载链接: https://dev.mysql.com/downloads/connector/j/ ...
随机推荐
- SpringBoot扫描包提示找不到mapper的问题
SpringBoot扫描包问题 报错信息:Consider defining a bean of type in your configuration 方法一: 使用注解 @ComponentScan ...
- Asp.Net Mvc3.0(MEF依赖注入理论)
前言 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等.MEF为开发人员提供了一个工具,让我们 ...
- BZOJ 3172 [Tjoi2013]单词 AC自己主动机(fail树)
题意:链接 方法:AC自己主动机与fail树性质 解析:复习AC自己主动机的第一道题?(真正的第一题明明是又一次写了遍hdu2222! ) 这题说实话第一眼看上去就是个sb题,仅仅要建出来自己主动机. ...
- iOS:创建撒花动画
一.介绍 在很多的游戏中,会有这么一个桥段,就是闯关成功后,会弹出一个奖品同时出现很多的鲜花或者笑脸.例如微信中祝福生日时,出现蛋糕等等.那么,这次我就来实现这个功能. 二.实现原理 对外接收一个图片 ...
- verilog语法实例学习(4)
Verilog模块 Verilog中代码描述的电路叫模块,模块具有以下的结构: module module_name[ (portname {, portname})]; //端口列表 [parame ...
- Verilog 加法器和减法器(4)
类似于行波进位加法器,用串联的方法也能够实现多位二进制数的减法操作. 比如下图是4位二进制减法逻辑电路图. 8位二进制减法的verilog代码如下: module subn(x, y, d,cin) ...
- [转]QT QDateTime类、QTimer类
QDateTime类,头文件#include <QDateTime> 可以使用QDateTime类来获得系统时间.通过QDateTime::currentDateTime()来获取本地系统 ...
- [转]教你修复win7中复制粘贴失效的问题
教你修复win7中复制粘贴失效的问题 发布时间:2018-01-17 使用win7系统的时候,我们经常需要对立面的内容进行复制粘贴来引用一些网站的内容,不过最近有网友在使用这个 ...
- 第四章 logstash - type与tags属性
参考:http://kibana.logstash.es/content/logstash/plugins/input/stdin.html 最常用法: input { stdin { tags =& ...
- C#线程同步方法汇总
我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在 后台处理一大堆数据,但还要使用户界面处于可操作状态:或者你的程序需要访问一些外部资源如数据库或网络文件等.这些情况你都可以创建一个子线 ...