java数据库编程(12)事务处理

  1. Connection是默认将executeXXX(String sql)执行之后马上提交给数据库的,这样一来,有时候如果需要处理一连串的sql语句(也就是事务,这里不讲解事务的相关知识),则需要将Connection的自动提交关掉,使用的方法为setAutoCommit(false)。在将事务包含的sql语句都使用executeXXX(String sql)执行完了之后,在使用Connection的commit()方法将所有sql语句都提交到数据库。
  2. 执行程序之前和执行程序之后的表
  3. 具体的讲解穿插在代码中
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class TransactionTest {
    //    常规操作
        private String driver;
        private String url;
        private String user;
        private String pass;
    
        public void initparam(String fileName)throws Exception{
            Properties prop = new Properties();
            prop.load(new FileInputStream(fileName));
            driver =  prop.getProperty("driver");
            url =  prop.getProperty("url");
            user =  prop.getProperty("user");
            pass = prop.getProperty("pass");
        }
    
        public void inserInTransaction(String [] sqls) throws Exception{
            Class.forName(driver);
            try(Connection conn = DriverManager.getConnection(url, user, pass)){
    
                conn.setAutoCommit(false);
    //            将connection的自动提交关掉
    
                try(
                        Statement stmt = conn.createStatement())
                {
                    for (String sql : sqls){
                        stmt.executeUpdate(sql);
                    }
                }
    
                conn.commit();
    //            在这里显示地提交
    
            }
        }
    
        public static void main(String args[]) throws  Exception{
            TransactionTest tt = new TransactionTest();
            tt.initparam("mysql.ini");
            String[] sqls = new String[]{
                    "insert into students values('S1', 'lala', 'f', 21, 'D01')",
                    "insert into students values('S5', 'lblb', 'm', 21, 'D01')",
                    "insert into students values('S6', 'lclc', 'f', 21, 'D01')",
            };
            tt.inserInTransaction(sqls);
        }
    }
    

    这是我看李刚编著的《疯狂Java讲义》后总结出来的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值