博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC事务处理和保存点
阅读量:6670 次
发布时间:2019-06-25

本文共 2485 字,大约阅读时间需要 8 分钟。

  hot3.png

/**	 * savepoint保存点使用	 * savepoint = con.setSavepoint();	 */	 /** *  * 事务处理 con.setAutoCommit(false); *  con.commit();  * 	con.rollback(savepoint);回滚到保存点 *	con.commit(); *distributed transaction JTA *一个分布式事务(distributed transaction) *包括一个事务管理器(transaction manager)和一个或多个资源管理器(resource manager)。 */  package com.study.test;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Savepoint;import java.sql.Statement;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Calendar;import org.junit.Test;import com.study.dao.AddressService;import com.study.dao.DaoFactory;import com.study.dao.domain.Address;import com.study.exceptions.DataAccessException;import com.study.utils.JdbcUtils;/** *  * 事务处理 con.setAutoCommit(false); *  con.commit();  * 	con.rollback(savepoint);回滚到保存点 *	con.commit(); *distributed transaction JTA *一个分布式事务(distributed transaction) *包括一个事务管理器(transaction manager)和一个或多个资源管理器(resource manager)。 */public class TestTransaction {	@Test	public void post() {		Connection con = null;		Statement st = null;		try {			con = JdbcUtils.getConnection();			con.setAutoCommit(false);			st = con.createStatement();			st.addBatch("update address set money=money-100 where addressid=10");			st.addBatch("update address set money=money+100 where addressid=11");			st.executeBatch();			con.commit();		} catch (SQLException e) {			try {				if (con != null)					con.rollback();			} catch (SQLException s) {				throw new DataAccessException(s.getMessage());			}		} finally {			JdbcUtils.free(null, st, con);		}	}	/**	 * savepoint保存点使用	 * savepoint = con.setSavepoint();	 */	@SuppressWarnings("unused")	@Test	public void savePoint() {		Connection con = null;		Statement st = null;		Savepoint savepoint = null;		try {			con = JdbcUtils.getConnection();			con.setAutoCommit(false);			st = con.createStatement();			st.executeUpdate("update address set money=money+100 where addressid=10");			savepoint = con.setSavepoint();				st.executeUpdate("update address set money=money+50 where addressid=11");			st.executeUpdate("update address set money=money+50 where addressid=12");			con.commit();		}  catch (SQLException e) {			try {				if (con != null&&savepoint!=null){					con.rollback(savepoint);//回滚到保存点				    con.commit();				}						} catch (SQLException s) {				throw new DataAccessException(e.getMessage());			}				} finally {			JdbcUtils.free(null, st, con);		}	}}

转载于:https://my.oschina.net/abian/blog/120638

你可能感兴趣的文章
电动汽车与ADAS
查看>>
.NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
查看>>
正则表达式匹配html标签里面的内容
查看>>
window.open()的具体使用方法
查看>>
数学分析_Tom Apostol_习题 9.1
查看>>
myeclipse删除项目后重新导入
查看>>
在进入新版本 的时候,进行推送引导
查看>>
Django 下载和初识
查看>>
HBase + Solr Cloud实现HBase二级索引
查看>>
移动端bug集合
查看>>
git的使用(本地版本库)
查看>>
[网页游戏开发]Morn简介及使用教程
查看>>
oracle where 条件的执行顺序分析1
查看>>
sql server 2008学习5 sql基础
查看>>
windows store app promise
查看>>
网络七层架构一句话简述
查看>>
zoj 2339 Hyperhuffman 哈夫曼编码 (c)
查看>>
函数类型
查看>>
Break和Continue的用法
查看>>
backbone 学习之history
查看>>