Java操作Mysql事务

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
public class TransactionDemo {
	//JDBC显示操作事务的API
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		Savepoint sp = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/mydb2?user=root&password=123456";
			conn = DriverManager.getConnection(url);
			String sqla = "update user set salary = 11111 where id = 32";
			String sqlb = "update user set salary = 22222  where id = 32";
			//设置事务显示手工提交
			conn.setAutoCommit(false);
			//sqla
			pstmt = conn.prepareStatement(sqla);
			pstmt.executeUpdate();
              //设置一个回滚点 sp = conn.setSavepoint(); int a = 10/0;//设置出错 //sqlb pstmt = conn.prepareStatement(sqlb); pstmt.executeUpdate(); //设置事务手工提交 conn.commit(); } catch (Exception e) { e.printStackTrace(); try { //事务回滚,默认情况下,回滚到事务开始之前的状态 conn.rollback(sp); conn.commit(); } catch (SQLException e1) { //e1.printStackTrace(); } }finally{ try { if(rs!=null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } try { if(pstmt!=null) pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

 当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。若想关闭这种默认提交方式,让多条SQL在一个事务中执行。可使用下列语句:  

JDBC控制事务语句

•Connection.setAutoCommit(false);
•Connection.rollback();
•Connection.commit();
 

 

 

 

posted @ 2013-04-06 13:09  hacket520  阅读(609)  评论(0)    收藏  举报