import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class DemoPreparedStatementAddBatchMySQL {
public static Connection getConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
public static void checkUpdateCounts(int[] updateCounts) {
for (int i = 0; i < updateCounts.length; i++) {
if (updateCounts[i] >= 0) {
System.out.println("Successfully executed; updateCount=" + updateCounts[i]);
} else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
System.out.println("Successfully executed; updateCount=Statement.SUCCESS_NO_INFO");
} else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
System.out.println("Failed to execute; updateCount=Statement.EXECUTE_FAILED");
}
}
}
public static void main(String[] args)throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
String query = "insert into add_batch_table(stringCol, intCol) values(?, ?)";
pstmt = conn.prepareStatement(query);
pstmt.setString(1, "1");
pstmt.setInt(2, 100);
pstmt.addBatch();
pstmt.setString(1, "2");
pstmt.setInt(2, 200);
pstmt.addBatch();
pstmt.setString(1, "3");
pstmt.setInt(2, 300);
pstmt.addBatch();
int[] updateCounts = pstmt.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 {
pstmt.close();
conn.close();
}
}
}