使用JDBC進(jìn)行事物操作和批處理

事物操作:模擬銀行轉(zhuǎn)賬系統(tǒng)

package day03;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/*
 * 事務(wù)演示:轉(zhuǎn)賬
 */

import day01.JdbcUtil;

public class Demo2 {
    public static void main(String[] args) {
        int outId=1001;
        int inId=1002;
        double money=1000;
        String outSql="update c_account set money=money-? where id=?";
        String inSql="update c_account set money=money+? where id=?";
        Connection conn=null;
        PreparedStatement pstmt=null;
        
        try {
            conn=JdbcUtil.getConnection();
            //設(shè)置自動提交方式為false
            conn.setAutoCommit(false);
            //轉(zhuǎn)出
            pstmt=conn.prepareStatement(outSql);
            pstmt.setDouble(1, money);
            pstmt.setInt(2, outId);
            pstmt.executeUpdate();
            
            //轉(zhuǎn)入
            pstmt=conn.prepareStatement(inSql);
            pstmt.setDouble(1,money);
            pstmt.setInt(2, inId);
            pstmt.executeUpdate();
            
            conn.commit();
            conn.setAutoCommit(true);
        
        } catch (SQLException e) {
            e.printStackTrace();
            try {
                conn.rollback();
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }finally{
            JdbcUtil.close(null, pstmt, conn);
        }
    }

}

批量處理:

package day03;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

import day01.JdbcUtil;

/*
 * 演示:JDBC的批量處理
 */

public class Demo3 {
    public static void main(String[] args) {
//      testInsert();
        int[] empNos=new int[30];
        int empNo=1209;
        for(int i =0;i<empNos.length;i++){
            empNos[i]=empNo;
            empNo-=5;
        }
        deleteByEmpNos(empNos);
    }
    //批量插入
    public static void testInsert(){
        Connection conn=null;
        Statement st=null;
        try {
            conn=JdbcUtil.getConnection();
            st=conn.createStatement();
            int count =1290;
            for(int i=0;i<=count;i++){
                String sql="insert into emp(empno,ename) values(empseq.nextval,'員工"+i+"')";
                //添加sql語句到語句對象的語句列表中
                st.addBatch(sql);
                if(i%200==0){
                    //執(zhí)行語句列表中的語句
                    st.executeBatch();
                    //清空語句列表中的sal
                    st.clearBatch();
                }
            }
            //執(zhí)行語句列剩下的sql
            st.executeBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.close(null, st, conn);
        }
    }
    
    public static void deleteByEmpNos(int[] empNos){
        Connection conn=null;
        PreparedStatement ps=null;
        try {
            conn=JdbcUtil.getConnection();
            String sql="delete from emp where empno=?";
            ps=conn.prepareStatement(sql);
            for(int empNo: empNos){
                ps.setInt(1, empNo);
                ps.addBatch();
            }
            ps.executeBatch();
            ps.clearBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JdbcUtil.close(null, ps, conn);
        }
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容