JDBC中的事务

1.事务的特性

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

2.JDBC事务控制

    Connection对象有三个函数对事务控制

  • 开启事务 con.setAutoCommit(false);
  • 提交事务 con.commit();
  • 回滚事务 con.rollback();

3.代码实例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class sql{
	/**
	 * @param args
	 */
	//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR 包中
	public static final String DBDRIVER = "com.mysql.jdbc.Driver";
	//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
	public static final String DBURL = "jdbc:mysql://192.168.0.31:3306/myDB";
	//连接数据库的用户名
	public static final String DBUSER = "root";
	//连接数据库的密码
	public static final String DBPASS = "";	
	
	public static void Account(String fromName, String toName) {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {          
            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
            conn.setAutoCommit(false);
            stmt = conn.prepareStatement("update user set account =? where name=?");           
            stmt.setInt(1, 0);
            stmt.setString(2, fromName);
            stmt.execute();
            stmt.setInt(1, 100);
            stmt.setString(2, toName);
            stmt.execute();
            conn.commit();
        } catch (SQLException e) {
        	if (conn != null) 
        	{
        		try {
                    conn.rollback();              
                } catch (SQLException el) {
                	el.printStackTrace();
                }  
        	}      	      	
        }
        finally {
            try {
                if (conn != null) conn.close();
                if (stmt != null) stmt.close();
            } catch (SQLException e) {
            	e.printStackTrace();
            }
        }
    }

	public static void main(String[] args) throws Exception {
		Class.forName(DBDRIVER);
		Account("Harris", "April");		
	}
}

执行前

mysql> select * from user;
+--------+---------+
| name   | account |
+--------+---------+
| Harris |     100 |
| April  |       0 |
+--------+---------+
2 rows in set (0.00 sec)

执行后

mysql> select * from user;
+--------+---------+
| name   | account |
+--------+---------+
| Harris |       0 |
| April  |     100 |
+--------+---------+
2 rows in set (0.00 sec)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值