JAVA基础--事务处理
事务处理:
1. 取消掉自动提交 set autocommmit=0
2. 开始事务 bigin
3. 进行一系列操作 update
4. 如果操作全部合格, 提交事务 commit
5. 如果发现有个地方有问题, 事务回滚 rollback
6. 或者设置一个savepoint, 保存事务的提交点.
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
public class TranDemo02{
// 定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
// 定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
// MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
// MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[]) throws Exception{ // 所有异常抛出
Connection conn = null ; // 数据库连接
Statement stmt = null ; // 定义数据库操作
Class.forName(DBDRIVER) ; // 加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; conn.setAutoCommit(false) ; // 取消掉自动提交 stmt = conn.createStatement() ;
stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
// 加入“'”之后,此SQL语法就出现了错误,所以,肯定执行到此语句的时候出现代码错误
stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-'3','hello-3',13,'男','1977-06-01') ") ;
stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
try{
int temp[] = stmt.executeBatch() ;
System.out.println("更新了:" + temp.length+ "条数据。") ;
conn.commit() ; // 所有的操作成功了
}catch(Exception e){
try{
conn.rollback() ;
}catch(Exception e1){ }
}
stmt.close() ;
conn.close() ; // 数据库关闭
}
};
设置savepoint
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
import java.sql.Savepoint ;
public class TranDemo03{
// 定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
// 定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
// MySQL数据库的连接用户名
public static final String DBUSER = "root" ;
// MySQL数据库的连接密码
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[]) throws Exception{ // 所有异常抛出
Connection conn = null ; // 数据库连接
Statement stmt = null ; // 定义数据库操作
Class.forName(DBDRIVER) ; // 加载驱动程序
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; conn.setAutoCommit(false) ; // 取消掉自动提交 stmt = conn.createStatement() ;
stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
Savepoint sp = conn.setSavepoint() ; // 设置保存点 stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
" VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
try{
conn.rollback(sp) ; // 回滚到保存点
conn.commit() ; // 所有的操作成功了
}catch(Exception e){
e.printStackTrace() ;
}
stmt.close() ;
conn.close() ; // 数据库关闭
}
};
JAVA基础--事务处理的更多相关文章
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- java的事务处理
本文转自http://zhenchengchagangzi.iteye.com/blog/1159493 java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在 ...
- 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- 笔试题之java基础
Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智 ...
- 40道Java基础常见面试题及详细答案
最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 八种基 ...
- java 之DelayQueue,TaskDelayed,handlerFactory,dataChange消息配置.收发等.java spring事务处理TransactionTemplate
java 之DelayQueue,TaskDelayed,handlerFactory,dataChange消息配置.收发等.java spring事务处理TransactionTemplate等. ...
- BAT常问问题总结以及回答(java基础回答一)
java 基础 八种基本数据类型的大小,以及他们的封装类 答:八种数据类型分别是byte(1字节)-128~127.short(2字节)-32768~32767.char(2字节).int(4字节) ...
随机推荐
- Flask architecture
论文The Flask Security Architecture: System Support for Diverse Security Policies 介绍了Flask architectur ...
- Trie/Xor
题目链接 /*有一个数组a1,a2,a3--an.找到一个连续子段[l,r],使得al ^ al+1 ^--^ ar达到最大. 一般思路:维护前缀异或+暴力: for(int i=1;i<=n; ...
- web配置文件的<load-on-startup>0</load-on-startup>
在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet.当值为0或者大于 ...
- Vector2.Angle 的 bug
获取角度 ,官方提供了 Vector2.Angle 来得值,他的值是在 0 ,180之间 原始代码是 public static float Angle(Vector3 from, Vector3 ...
- IE6下整站的bug详解
<1>文字不居中:加一个行高: <2>png文件作为背景不显示: <!--[if IE 6]> <script src="js/DD_belated ...
- Linux学习 -- Shell编程 -- 正则表达式
正则表达式与通配符 正则 -- 匹配字符串 -- 包含匹配 grep.awk.sed等 通配符 -- 匹配文件名 -- 完全匹配 ls.find.cp等 基础正则表达式
- C1 FlexGrid控件 Editor 冲突问题
当给C1FlexGrid控件加入 Checkbox后,添加新行时对新行的Editor 赋新控件时,会冲突如下图: 下面我们借助BeforeRowColChange 事件来解决这个问题: 我 ...
- Java 学习路线以及各阶段学习书籍,博文,视频的分享
感谢: 感谢每一个打开这篇文章的人,听我在这里瞎扯!至于我为什么会有闲情写这篇文章呢?因为我每天想的是为什么要给我这样的需求,背后的人性是什么,我能再做些什么能让他更好.久而久之,我也稍微有了些自己的 ...
- Windows下python安装MySQLdb
安装MySQLdb需要在电脑上安装MySQL connector C,只需要这个connector就好,不需要把mysql装全. 另外,需要安装VC for python提供编译. 到官网上下载脚本进 ...
- WebSphere MQ 入门指南【转】
WebSphere MQ 入门指南 转自 WebSphere MQ 入门指南 - 大CC - 博客园http://www.cnblogs.com/me115/p/3456407.html 这是一篇入门 ...