I was wondering if it is possible to do both a parameterized DELETE and INSERT statement using batch. I am aware of how to insert multiple rows, however, I would first like to do a DELETE statement (Which requires different parameters). Here is how I am inserting multiple statements:
String query = "INSERT INTO " + TABLE + "(FOO, BAR) VALUES (?,?);";
PreparedStatement sql = connection.prepareStatement(query);
for(...){
sql.setString(1, fooValue);
sql.setInt(2, barValue);
sql.addBatch();
}
sql.executeBatch();
sql.close();
Use addBatch then executeBatch:
Statement st = con.createStatement();
st.addBatch("DELETE FROM tbl1");
st.addBatch("DELETE FROM tbl2");
st.addBatch("DELETE FROM tbl3");
int[] results = st.executeBatch();
Then results will contain an array with the number of rows deleted from each table.
Here's an example to show you how to insert few records in batch process, via JDBC PreparedStatement.
dbConnection.setAutoCommit(false);//commit trasaction manually
String insertTableSQL = "INSERT INTO DBUSER"
+ "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
+ "(?,?,?,?)";
PreparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setInt(1, 101);
preparedStatement.setString(2, "mkyong101");
preparedStatement.setString(3, "system");
preparedStatement.setTimestamp(4, getCurrentTimeStamp());
preparedStatement.addBatch();
preparedStatement.setInt(1, 102);
preparedStatement.setString(2, "mkyong102");
preparedStatement.setString(3, "system");
preparedStatement.setTimestamp(4, getCurrentTimeStamp());
preparedStatement.addBatch();
preparedStatement.executeBatch();
dbConnection.commit();
JDBC PreparedStatement example – Batch Update
Example/ Full Programs JDBC- Batch PreparedStatement - Execute DELETE query using PreparedStatement's executeUpdate method in java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class PreparedStatementDeleteExample {
public static void main(String... arg) {
Connection con = null;
PreparedStatement prepStmt = null;
try {
// registering Oracle driver class
Class.forName("oracle.jdbc.driver.OracleDriver");
// getting connection
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
"ankit", "Oracle123");
System.out.println("Connection established successfully!");
con.setAutoCommit(false); //Now, transactions won't be committed automatically.
prepStmt = con.prepareStatement("DELETE from EMPLOYEE where ID=? ");
//1) add set of parameters in PreparedStatement's object - BATCH of commands
prepStmt.setInt(1, 7); //substitute first occurrence of ? with 7
prepStmt.addBatch();
//2) add set of parameters in PreparedStatement's object - BATCH of commands
prepStmt.setInt(1, 8); //substitute first occurrence of ? with 8
prepStmt.addBatch();
//Execute PreparedStatement batch
prepStmt.executeBatch();
System.out.println("PreparedStatement Batch executed, DELETE done");
con.commit(); //commit all the transactions
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
finally{
try {
if(prepStmt!=null) prepStmt.close(); //close PreparedStatement
if(con!=null) con.close(); // close connection
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Connection established successfully!
PreparedStatement Batch executed, DELETE done
In this tutorial we learned how to Execute DELETE query(DML command) using PreparedStatement's addBatch()
and executeBatch()
methods in java JDBC.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.