zoukankan      html  css  js  c++  java
  • Java程序中如何使用事物

    在java操作数据库是,为了保证数据的一致性,比如转账操作,从一个账户减掉10元,在另一个账户加上10元。

     

    在类中定义的成员属性(变量)不用赋初值,但在函数里头定义的变量就一定要赋初值。

    package com.test;

    import java.sql.*;

    public class Test {

        public static void main(String[] args) {

            //怎么把多个dml语句看做一个整体事物,统一提交

            Connection ct = null;

            try {

                String sql1="update emp set sal=sal-10 where empno=7369";

                String sql2="update emp set sal=sal+10 where empno=7499";

                //得到一个连接

                ct=SQLHelper.getConnection();

                //把事物设为不自动提交

                ct.setAutoCommit(false);

     

                PreparedStatement ps1=ct.prepareStatement(sql1);

                PreparedStatement ps2=ct.prepareStatement(sql2);

               

                ps1.executeUpdate();

                int i=90/0;

                ps2.executeUpdate();

                //把两个操作看做一个事物统一提交

                ct.commit();

            } catch (Exception e) {

                e.printStackTrace();

                //如果事物出现了异常,我们可以回滚(相当于这个事物所有操作全部取消)

                try {

                    ct.rollback();

                } catch (Exception e1) {

                    e1.printStackTrace();

                }

            }finally{

               

            }

        }

    }

     

    ☞如果一个事物中,只有select,那么事物控制可以忽略,如果一个事物有多个(update、insert、delete)则需要考虑事物。

    思考:如何把事物控制直接封装到SQLHelper这个类中。

  • 相关阅读:
    podium服务器端的微前端开发框架
    几个java proxy servlet 工具
    Presto Infrastructure at Lyft
    cube.js 通过presto-gateway 进行连接
    presto-gateway nodejs client
    presto-gateway 试用以及docker 镜像制作
    presto-gateway lyft 团队开源的prestodb 的负载均衡、代理、网关工具
    Singer 修改tap-s3-csv 支持minio 连接
    plotly-dash 简单使用(一)
    smashing 三方widgets 使用
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11113987.html
Copyright © 2011-2022 走看看