批處理SQL語句


    作用:想發送多條SQL,又要降低與數據庫系統的交互,這時使用批處理
    
    一】Statement對象——適合對不同結構的SQL語句進行批處理操作
        步驟:
            1)將給定的 SQL 命令添加到此 Statement 對象的當前命令列表中
                void addBatch(String sql);
            2)將一批命令提交給數據庫來執行,如果全部命令執行成功,則返回更新計數組成的數組。
                int[] executeBatch()
                返回值:
                    1> 大於等於 0 的數 - 指示成功處理了命令,是給出執行命令所影響數據庫中行數的更新計數
                    2> SUCCESS_NO_INFO 的值 - 指示成功執行了命令,但受影響的行數是未知的
                    3> EXECUTE_FAILED 的值 - 指示未能成功執行命令,僅當命令失敗后驅動程序繼續處理命令時出現
                    
            3)清空此 Statement 對象的當前 SQL 命令列表
                void clearBatch();

        code:

          /*此方法只會連接一次,但是會編譯多次*/
            stmt = conn.createStatement();
            /*添加SQL語句*/
            stmt.addBatch(SqlMapping.ADD_USER_SQL);
            stmt.addBatch(SqlMapping.MODIFIED_USER_SQL);
            /*執行多條SQL語句*/
            int[] rows = stmt.executeBatch();
            System.out.println(rows.length);
            /*清空SQL語句*/
            stmt.clearBatch();    

 


            
            
    二】PreparedStatement對象——適合對相同機構的SQL語句進行批處理操作
        重點類:
            void addBatch();
            void executeBatch()
            void clearBatch();
        code:

       /*此方式只連接一次,也只編譯一次!*/
            pstmt = conn.prepareStatement(SqlMapping.ADD_USER_PRSQL);
            for (int i = 0; i < 1003; i++) {
                pstmt.setString(1, "jack" + i);
                pstmt.setInt(2, (i + 15) % 30);
                pstmt.addBatch();
                if (0 == (i % 100)) {
                    pstmt.executeBatch();
                    pstmt.clearBatch();
                }
            }
            pstmt.addBatch();
            pstmt.execute();
            pstmt.clearBatch();

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM