zoukankan      html  css  js  c++  java
  • 事物? 模拟银行的转账业务!

    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);}
            
        }
    }
  • 相关阅读:
    ServiceStack在IIS7中发布后出现403.14错误
    ORACLE 误删除数据恢复
    Xamarin官方示例代码无法部署,提示已跳过部署解决方法
    安装完Oracle之后的注意事项
    在VS2013中使用水晶报表
    ArcObjects10.0MapControl不显示地图内容
    ArcObjects10.0引用控件报错
    ArcGIS Desktop10.2与CityEngine2012兼容问题
    mmo设计
    java nio 网络框架实现
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10648527.html
Copyright © 2011-2022 走看看