Java教程

javaweb学习26:复习JDBC事务

本文主要是介绍javaweb学习26:复习JDBC事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

javaweb学习26:JDBC事务

  • 事务:

    • 要么都成功,要么都失败;

    • ACID原则:保证数据的安全

    • 事务的状态:

      开启事务
      事务提交:commit()
      事务回滚:rollback()
      关闭事务
      ​
          
      转账:
      A:1000
      B:1000
          
         结果: A(900) --100--> B(1100)
          
      事务:
          A:SQL:1000-100;
          B:SQL:1000+100;
          把这一组SQL放在一个事务中,要么都成功,要么都失败;

       

  • Junit单元测试:

    • 依赖:

      <!--单元测试-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
      </dependency>
    • 使用:

      • @Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!

      @Test
      public void test(){
          System.out.println("Hello");
      }

       

  • 代码案例:A给B转账:测试事务

    /**
     * 测试事务
     */
    public class TestJDBC3 {
    ​
        @Test
        public void test()  {
    ​
            //配置信息
            String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
            String username="root";
            String password="root";
            Connection conn =null;
    ​
            try {
                //1,加载驱动
                Class.forName("com.mysql.jdbc.Driver");
    ​
                //2,建立连接:
                conn = DriverManager.getConnection(url, username, password);
                //3,通知数据库开启事务
                conn.setAutoCommit(false);//fasle是开启
    ​
                //3,编写SQL
                String sql1="update account set money=money-100 where name='A'";
                conn.prepareStatement(sql1).executeUpdate();
    ​
                int j=1/0;  //制造错误
    ​
                String sql2="update account set money=money+100 where name='B'";
                conn.prepareStatement(sql2).executeUpdate();
    ​
                conn.commit();//以上2条SQL都执行成功了, 就提交事务!
                System.out.println("SQL执行成功");
    ​
            } catch (Exception e) {
                e.printStackTrace();
                try {
                    //SQL执行失败,就回滚事务
                    conn.rollback();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }finally {
                try {
                    //6,关闭连接
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    ​
    ​

     

 

 

 

 

 

这篇关于javaweb学习26:复习JDBC事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!