以下是使用Statement
對象的批處理的典型步驟序列 -
- 使用
createStatement()
方法創建Statement
對象。 - 使用
setAutoCommit()
將自動提交設置為false
。 - 使用
addBatch()
方法在創建的Statement
對象上添加SQL語句到批處理中。 - 在創建的
Statement
對象上使用executeBatch()
方法執行所有SQL語句。 - 最后,使用
commit()
方法提交所有更改。
此示例代碼是基於前面章節中完成的環境和數據庫設置編寫的。
以下代碼片段提供了使用Statement
對象的批量更新示例,將下面代碼保存到文件:BatchingWithStatement.java -
// Import required packages // See more detail at http://www.yiibai.com/jdbc/ import java.sql.*; public class BatchingWithStatement { // JDBC driver name and database URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EMP"; // Database credentials static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // Register JDBC driver Class.forName("com.mysql.jdbc.Driver"); // Open a connection System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); // Create statement System.out.println("Creating statement..."); stmt = conn.createStatement(); // Set auto-commit to false conn.setAutoCommit(false); // First, let us select all the records and display them. printRows( stmt ); // Create SQL statement String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(200,'Curry', 'Stephen', 30)"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create one more SQL statement SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(201,'Kobe', 'Bryant', 35)"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create one more SQL statement SQL = "UPDATE Employees SET age = 35 " + "WHERE id = 100"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create an int[] to hold returned values int[] count = stmt.executeBatch(); //Explicitly commit statements to apply changes conn.commit(); // Again, let us select all the records and display them. printRows( stmt ); // Clean-up environment stmt.close(); conn.close(); }catch(SQLException se){ //Handle errors for JDBC se.printStackTrace(); }catch(Exception e){ //Handle errors for Class.forName e.printStackTrace(); }finally{ //finally block used to close resources try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ }// nothing we can do try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }//end finally try }//end try System.out.println("Goodbye!"); }//end main public static void printRows(Statement stmt) throws SQLException{ System.out.println("Displaying available rows..."); // Let us select all the records and display them. String sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ //Retrieve by column name int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last