Mega Code Archive

 
Categories / Java / Database SQL JDBC
 

Deal with batch update exception and results

import java.sql.BatchUpdateException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DemoBatchUpdateException {   public static Connection getMySQLConnection() throws Exception {     String driver = "org.gjt.mm.mysql.Driver";     String url = "jdbc:mysql://localhost/databaseName";     String username = "root";     String password = "root";     Class.forName(driver);     return DriverManager.getConnection(url, username, password);   }     public static void checkUpdateCounts(int[] updateCounts) {     for (int i = 0; i < updateCounts.length; i++) {       if (updateCounts[i] >= 0) {         // Successfully executed; the number represents number of affected rows         System.out.println("OK: updateCount=" + updateCounts[i]);       } else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {         // Successfully executed; number of affected rows not available         System.out.println("OK: updateCount=Statement.SUCCESS_NO_INFO");       } else if (updateCounts[i] == Statement.EXECUTE_FAILED) {         System.out.println("updateCount=Statement.EXECUTE_FAILED");       }     }   }   public static void main(String[] args)throws Exception {     Connection conn = getMySQLConnection();     Statement stmt = null;     try {       conn.setAutoCommit(false);       stmt = conn.createStatement();       stmt.addBatch("DELETE FROM animalsTable");       stmt.addBatch("INSERT INTO animalsTable(id, name) VALUES(1, 'A')");       stmt.addBatch("INSERT INTO animalsTable(id, name) VALUES(2, 'B')");       stmt.addBatch("INSERT INTO animalsTable(id, name) VALUES(3, 'C')");       int[] updateCounts = stmt.executeBatch();       checkUpdateCounts(updateCounts);       conn.commit();     } catch (BatchUpdateException e) {       int[] updateCounts = e.getUpdateCounts();       checkUpdateCounts(updateCounts);       try {         conn.rollback();       } catch (Exception e2) {         e.printStackTrace();       }     } catch (Exception e) {       e.printStackTrace();     } finally {       stmt.close();       conn.close();     }   } }