JDBC事务测试

package com.chu.two;

import java.sql.*;

public class TestTansaction {
    public static void main(String[] args) throws SQLException {
        Connection con = null;      //放在外面防止关不掉
        PreparedStatement pst = null;
        ResultSet re = null;

        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school", "root", "123456");
        con.setAutoCommit(false);         //关闭自动提交,自动开启事务
        pst = con.prepareStatement("select * from ak");     //可以不带参数
        re = pst.executeQuery();
//        con.rollback();                    出错默认回滚

        while (re.next()) {
            System.out.println(re.getInt("id"));
        }
        re.close();
        pst.close();
        con.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用JDBC事务进行转账的Java示例: ```java import java.sql.*; public class TransferMoney { public static void main(String[] args) { Connection conn = null; PreparedStatement stmt1 = null; PreparedStatement stmt2 = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); conn.setAutoCommit(false); // 关闭自动提交 // 执行转账操作 stmt1 = conn.prepareStatement("update account set balance = balance - ? where id = ?"); stmt1.setDouble(1, 100); stmt1.setInt(2, 1); stmt1.executeUpdate(); stmt2 = conn.prepareStatement("update account set balance = balance + ? where id = ?"); stmt2.setDouble(1, 100); stmt2.setInt(2, 2); stmt2.executeUpdate(); conn.commit(); // 提交事务 System.out.println("转账成功"); } catch (Exception e) { try { conn.rollback(); // 回滚事务 } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } finally { try { stmt1.close(); stmt2.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上代码使用了JDBC事务机制,首先将自动提交关闭,然后通过两个PreparedStatement对象分别执行两个更新操作,最后提交事务。如果在执行更新操作或提交事务的过程中发生异常,就回滚事务测试时需要先在数据库中创建一个account表,包含id和balance两个字段,然后插入两条数据,分别对应id为1和2的账户。执行该程序后,可以观察到在正常情况下转账成功,但如果在执行更新操作或提交事务的过程中发生异常,就会回滚事务,转账不会成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值