- JDBC 教程
- JDBC - 首頁
- JDBC - 簡介
- JDBC - SQL 語法
- JDBC - 環境
- JDBC - 示例程式碼
- JDBC - 驅動程式型別
- JDBC - 連線
- JDBC - 語句
- JDBC - 結果集
- JDBC - 資料型別
- JDBC - 事務
- JDBC - 異常
- JDBC - 批處理
- JDBC - 儲存過程
- JDBC - 資料流
- JDBC - RowSet
- JDBC - 複製資料庫
- JDBC - ACID 屬性
- JDBC - 連線池
- JDBC 示例
- JDBC - 建立資料庫
- JDBC - 選擇資料庫
- JDBC - 刪除資料庫
- JDBC - 建立表
- JDBC - 刪除表
- JDBC - 插入記錄
- JDBC - 選擇記錄
- JDBC - 更新記錄
- JDBC - 刪除記錄
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 資料排序
- JDBC 有用資源
- JDBC - 問答
- JDBC - 快速指南
- JDBC - 有用資源
- JDBC - 討論
- 有用 - Java 教程
JDBC - 批處理
批處理允許您將相關的 SQL 語句組合成一個批次,並透過一次呼叫提交到資料庫。
當您一次向資料庫傳送多個 SQL 語句時,您可以減少通訊開銷,從而提高效能。
JDBC 驅動程式不需要支援此功能。您應該使用 DatabaseMetaData.supportsBatchUpdates() 方法來確定目標資料庫是否支援批更新處理。如果您的 JDBC 驅動程式支援此功能,則該方法返回 true。
Statement、PreparedStatement 和 CallableStatement 的 addBatch() 方法用於將單個語句新增到批處理中。executeBatch() 用於啟動所有分組語句的執行。
executeBatch() 返回一個整數陣列,陣列的每個元素代表相應更新語句的更新計數。
就像您可以將語句新增到批處理以進行處理一樣,您也可以使用 clearBatch() 方法將其刪除。此方法刪除您使用 addBatch() 方法新增的所有語句。但是,您不能選擇性地選擇要刪除哪個語句。
使用 Statement 物件進行批處理
以下是使用 Statement 物件進行批處理的典型步驟序列:
使用 createStatement() 方法建立 Statement 物件。
使用 setAutoCommit() 將自動提交設定為 false。
使用在建立的語句物件上使用 addBatch() 方法將任意數量的 SQL 語句新增到批處理中。
使用在建立的語句物件上使用 executeBatch() 方法執行所有 SQL 語句。
最後,使用 commit() 方法提交所有更改。
示例
以下程式碼片段提供了使用 Statement 物件進行批更新的示例:
// Create statement object
Statement stmt = conn.createStatement();
// Set auto-commit to false
conn.setAutoCommit(false);
// Create SQL statement
String SQL = "INSERT INTO Employees (id, first, last, age) " +
"VALUES(200,'Zia', 'Ali', 30)";
// Add above SQL statement in the batch.
stmt.addBatch(SQL);
// Create one more SQL statement
String SQL = "INSERT INTO Employees (id, first, last, age) " +
"VALUES(201,'Raj', 'Kumar', 35)";
// Add above SQL statement in the batch.
stmt.addBatch(SQL);
// Create one more SQL statement
String 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();
為了更好地理解,讓我們研究一下 批處理 - 示例程式碼。
使用 PrepareStatement 物件進行批處理
以下是使用 PrepareStatement 物件進行批處理的典型步驟序列:
建立帶有佔位符的 SQL 語句。
使用 prepareStatement() 方法建立 PrepareStatement 物件。
使用 setAutoCommit() 將自動提交設定為 false。
使用在建立的語句物件上使用 addBatch() 方法將任意數量的 SQL 語句新增到批處理中。
使用在建立的語句物件上使用 executeBatch() 方法執行所有 SQL 語句。
最後,使用 commit() 方法提交所有更改。
以下程式碼片段提供了使用 PrepareStatement 物件進行批更新的示例:
// Create SQL statement
String SQL = "INSERT INTO Employees (id, first, last, age) " +
"VALUES(?, ?, ?, ?)";
// Create PrepareStatement object
PreparedStatement pstmt = conn.prepareStatement(SQL);
//Set auto-commit to false
conn.setAutoCommit(false);
// Set the variables
pstmt.setInt( 1, 400 );
pstmt.setString( 2, "Pappu" );
pstmt.setString( 3, "Singh" );
pstmt.setInt( 4, 33 );
// Add it to the batch
pstmt.addBatch();
// Set the variables
pstmt.setInt( 1, 401 );
pstmt.setString( 2, "Pawan" );
pstmt.setString( 3, "Singh" );
pstmt.setInt( 4, 31 );
// Add it to the batch
pstmt.addBatch();
//add more batches
.
.
.
.
//Create an int[] to hold returned values
int[] count = stmt.executeBatch();
//Explicitly commit statements to apply changes
conn.commit();
為了更好地理解,讓我們研究一下 批處理 - 示例程式碼。