52.jdbc 中对事务的控制

1.事务:将多条SQL语句绑定在一块儿要么都成功,要么都不成功java

2.应用:转帐mysql

3.代码sql

package cn.ma.transitionmanager.jdbc;数据库

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.UUID;dom

import org.junit.Test;ui

public class TransitionManager {
        @Test//想数据库插入数据
        public void testInsertDataTransitionManager() throws Exception{
            Connection conn=null; //链接
            Statement stmt=null;  //
            try {
                    //1.加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //2.得到链接
                conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/day20", "root", "root");
                    //3.得到执行对象
                    stmt = conn.createStatement();
                    //4.执行SQL
                    UUID uuid = UUID.randomUUID();
                    Date d = new Date();
                    String time =    d.toLocaleString().toString();
                    String sql="insert into t_transitionManager values('"+uuid+"','张三','1000','666','"+time+"')";
                    stmt.executeUpdate(sql);
                    
                    UUID uuid2 = UUID.randomUUID();
                    String time2 =    d.toLocaleString().toString();
                    String sql2="insert into t_transitionManager values('"+uuid2+"','李四','1000','999','"+time+"')";
                    stmt.executeUpdate(sql2);spa


                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }finally {
                    //6.关闭资源
                    stmt.close();
                    conn.close();
                }
            
            
        }
        @Test//更新数据库数据
        public void testupdateDataTransitionManager() throws Exception{
            Connection conn=null; //链接
            Statement stmt=null;  //
            try {
                //1.加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //2.得到链接
                conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/day20", "root", "root");
                //3.得到执行对象
                stmt = conn.createStatement();
                //4.执行SQL
                conn.setAutoCommit(false);//开启事务。手动提交事务
                
                String sql="update t_transitionManager set money=money-100 where accountnumber='999'";
                String sql2="update t_transitionManager set money=money+100 where accountnumber='666'";
                stmt.executeUpdate(sql);
                int i =10/0;//异常代码
                stmt.executeUpdate(sql2);
                
                conn.commit();//提交事务
                
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                conn.rollback();//回滚事务
            }finally {
                //6.关闭资源
                //关闭资源
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            
            
        }
}对象

4.表结构事务


5.注意点资源

开始事务必须在SQL执行以前

相关文章
相关标签/搜索