• 事物? 模拟银行的转账业务!


    package cn.zhouzhou;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    /*一、事物?---------------模拟银行的转账业务!
     * 
     *         1.开启事物    
     *                 con01.setAutoCommit(false);
     *                 setAutoCommit(boolean autoCommit) 
                    将此连接的自动提交模式设置为给定状态。 
     *         2.获取preparedstateme 执行SQL语句
     *             【?】 占位子节符 
     *         3.使用 preparedstatement 两次更新操作
     *                 setDouble(int parameterIndex, double x) 
                    将指定的参数设置为给定的Java double值。 
                    setString(int parameterIndex, String x) 
                    将指定的参数设置为给定的Java String值。 
     *         4.提交事物    
     *                 con01.commit();
     *                 使自上次提交/回滚以来所做的所有更改都将永久性,
     *                 并释放此 Connection对象当前持有的任何数据库锁。 
     * 
     *         5.事务回滚        
     *                 con01.rollback();
                     * 撤消在当前事务中所做的所有更改,
                     * 并释放此 Connection对象当前持有的任何数据库锁。 
              6.关闭资源
                    finally{工具类存在硬编码问题.close(ps01, con01);}
                    
     * 
     * 
     */
    public class 事物 {
        public static void main(String[] args) {
            Connection con01=null;
            PreparedStatement ps01=null;
            //开启事物
            try {
                con01=工具类存在硬编码问题.getConnection();
                con01.setAutoCommit(false);
            //获取preparedstateme 执行SQL语句
                String sql="update shop set price=price-? where name =?";
                ps01=con01.prepareStatement(sql);
            
            //使用 preparedstatement 两次更新操作
                ps01.setDouble(1, 1);
                ps01.setString(2, "a");
                ps01.executeUpdate();
                
            //    System.out.println(111/0);
                
                String sql01="update shop set price=price+? wehere name=?";
                ps01=con01.prepareStatement(sql01);
                ps01.setDouble(1, 2);
                ps01.setString( 2, "b");
                ps01.execute();
                
                //提交事务?
                con01.commit();
                System.out.println("转账成功!");
                
                
                
            } 
            catch (SQLException e) 
            {
                //事物回滚?
                try 
                {
                    con01.rollback();
                } 
                catch (SQLException e1) {
                
                    e1.printStackTrace();
                }
                System.out.println("失败");
                
            }finally{工具类存在硬编码问题.close(ps01, con01);}
            
        }
    }
  • 相关阅读:
    何谓算法
    大规模Web服务开发技术
    什么是依赖,什么是抽象
    智能Web算法
    算法评测
    好代码、坏代码之四
    SVN server setup 1
    Python正则表达式操作指南(re使用)(转)
    rpm package installation
    mysql install error:Make had returned bad status, install seems impossible
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10648527.html
Copyright © 2020-2023  润新知