jdbc 事务

JDBC中使用事务是通过Connection对象的3个方法完成的:

connection.setAutoCommit(false); // 开户手动事务模式
connection.commit(); // 提交事务
connection.rollback(); // 如果执行失败,执行事务回滚
下面的代码演示了事务的使用方法。在这个例子里,第一件事和第二件事必须都执行成功。若一件事执行失败,将事务回滚,所有修改都取消。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Transaction {

public static void main(String[] args) {
    String url = "jdbc:mysql://127.0.0.1:3306/northwind";
    String user = "northwind";
    String password = "northwind";

    Connection connection = null;
    try {
        connection = DriverManager.getConnection(url, user, password);
        connection.setAutoCommit(false); // 开启手动事务模式

        // 第一件事
        Statement statement1 = null;
        try {
            statement1 = connection.createStatement();
            statement1.executeUpdate("update employees set lastname='张' where id=1");
        } finally {
            if (statement1 != null) {
                statement1.close();
            }
        }

        // 第二件事
        Statement statement2 = null;
        try {
            statement2 = connection.createStatement();
            statement2.executeUpdate("update employees set lastname='谢' where id=2");
        } finally {
            if (statement2 != null) {
                statement2.close();
            }
        }
        // 提交事务
        connection.commit();
    } catch (SQLException e1) {  //事务提交失败,执行事务圆润
        try {
            connection.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } finally {  // 释放资源
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值