バッチSQL文

3038 ワード

役割:複数のSQLを送りたいです。また、データベースシステムとの相互作用を低減したいです。この時にバッチ処理を使います。        一)Sttementオブジェクト——異なる構造のSQL文を一括処理するのに適しています。        ステップ:            1)所与のSQLコマンドをSttementオブジェクトの現在のコマンドリストに追加します。                void addBatch(String sql);            2)一連のコマンドをデータベースに提出して実行します。すべてのコマンドが実行に成功すれば、カウントを更新する配列を返します。                int[]executeBatch()                戻り値:                    1>0以上の数-コマンドの処理に成功したことを示し、実行コマンドに影響を与えるデータベースの行数を与える更新カウントです。                    2>SUCCESS_NOの_INFOの値-コマンドの実行に成功したことを示しますが、影響を受ける行数は不明です。                    3>EXECUTE_FAILDの値-コマンドの実行に失敗したことを示しています。コマンドが失敗した場合のみ、ドライバは命令を処理し続けます。                                3)このSttementオブジェクトの現在のSQLコマンドのリストを空にします。                void clear Batch();        コード:
          /**/

            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();    
 
                            二)PreparedSttementオブジェクト——同じ機構のSQL文に対してバッチ操作を行うのに適しています。        重点クラス:            void addBatch();            void executeBatch()            void clear Batch();        コード:
       /*        ,      !*/

            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();