Mega Code Archive

 
Categories / Java Tutorial / Database
 

Use Batch Multiple Updates with PreparedStatement

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; public class Main {   public static void main(String[] args) throws Exception {     Connection conn = getConnection();     conn.setAutoCommit(false);     Statement st = conn .createStatement();          st.executeUpdate("create table survey (id int, name VARCHAR(30) );");          String INSERT_RECORD = "insert into survey(id, name) values(?,?)";          PreparedStatement pstmt = conn.prepareStatement(INSERT_RECORD);     pstmt.setString(1, "1");     pstmt.setString(2, "name1");     pstmt.addBatch();          pstmt.setString(1, "2");     pstmt.setString(2, "name2");     pstmt.addBatch();          // execute the batch     int[] updateCounts = pstmt.executeBatch();     checkUpdateCounts(updateCounts);     // since there were no errors, commit     conn.commit();          ResultSet rs = st.executeQuery("SELECT * FROM survey");     outputResultSet(rs);          rs.close();     st.close();     conn.close();   }   public static void checkUpdateCounts(int[] updateCounts) {     for (int i=0; i<updateCounts.length; i++) {         if (updateCounts[i] >= 0) {             System.out.println("OK; updateCount="+updateCounts[i]);         }         else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {             System.out.println("OK; updateCount=Statement.SUCCESS_NO_INFO");         }         else if (updateCounts[i] == Statement.EXECUTE_FAILED) {             System.out.println("Failure; updateCount=Statement.EXECUTE_FAILED");         }     } }        private static void outputResultSet(ResultSet rs) throws Exception {     ResultSetMetaData rsMetaData = rs.getMetaData();     int numberOfColumns = rsMetaData.getColumnCount();     for (int i = 1; i < numberOfColumns + 1; i++) {       String columnName = rsMetaData.getColumnName(i);       System.out.print(columnName + "   ");     }     System.out.println();     System.out.println("----------------------");     while (rs.next()) {       for (int i = 1; i < numberOfColumns + 1; i++) {         System.out.print(rs.getString(i) + "   ");       }       System.out.println();     }   }   private static Connection getConnection() throws Exception {     Class.forName("org.hsqldb.jdbcDriver");     String url = "jdbc:hsqldb:mem:data/tutorial";     return DriverManager.getConnection(url, "sa", "");   } } OK; updateCount=1 OK; updateCount=1 ID NAME ---------------------- 1 name1 2 name2