使用jdbc执行SQL实现登录查询3 -事务查询版

package com.jdsc;

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

/**
 * @author Alina
 * @date 2022年02月06日 2:51 下午
 * 开启事务管理数据库,如果事务有异常则回滚到之前的状态
 * JDBC控制事务:
 * 	1. 事务:一个包含多个步骤的业务操作。
 * 	        需要被事务管理,同时成功,同时失败。
 * 	2. 操作:
 * 		 开启事务
 * 		 提交事务
 * 		 回滚事务
 * 	3. Connection对象来管理事务
 * 		开启事务:setAutoCommit(boolean autoCommit) 参数为false:开启事务
 * 			sql之前开启事务
 * 		提交事务:commit()
 * 			sql都执行完提交事务
 * 	    回滚事务:rollback()
 * 			 在catch中回滚事务
 */
public class jdbcDemo8 {
    public static void main(String[] args) {
        new jdbcDemo8().login();
    }
    public boolean login(){
        Connection conn = null;
        PreparedStatement statement1 = null;
        PreparedStatement statement2 = null;

        try {
            //连接数据库
            conn = Utils.JDBCUtils.getconnection();
            //开启事务
            conn.setAutoCommit(false);

            //定义SQL语句
            String sql1 = "update account set balance = balance + ? where name = ?";
            //获取sql1执行对象
            statement1 = conn.prepareStatement(sql1);
            //使用prepareStatement 子类的方法进行赋值
            statement1.setInt(1,500);
            statement1.setString(2,"zhangsan");
            //执行SQL语句
            statement1.execute();

            String sql2 = "update account set balance = balance - ? where name =?";
            //获取sql2的执行对象
             statement2 = conn.prepareStatement(sql2);
            statement2.setInt(1,500);
            statement2.setString(2,"lisi");
            statement2.execute();
            //提交事务
            conn.commit();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            try {
                conn.rollback();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }finally {
            Utils.JDBCUtils.close(statement2,null);
            Utils.JDBCUtils.close(statement1,conn);

        }
        return false;
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值