/** * Copyright 2015 Santhosh Kumar Tekuri * * The JLibs authors license this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package jlibs.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * @author Santhosh Kumar T */ class Batch{ PreparedStatement pstmt; String query; int flushInterval; int count; Batch(int flushInterval){ this.flushInterval = flushInterval; } PreparedStatement prepareStatement(Connection con, String query) throws SQLException { if(pstmt!=null){ if(query.equals(this.query)) return pstmt; else{ try{ pstmt.executeBatch(); }finally{ pstmt.close(); } } } pstmt = con.prepareStatement(query); this.query = query; count = 0; return pstmt; } int executeUpdate() throws SQLException{ pstmt.addBatch(); count++; if(count>=flushInterval){ pstmt.executeBatch(); count = 0; } return 0; } void finish(boolean commit) throws SQLException{ if(pstmt!=null){ try{ if(commit && count>0) pstmt.executeBatch(); }finally{ pstmt.close(); } } } void rollback() throws SQLException{ if(pstmt!=null) pstmt.close(); } }