JDBC 批量處理
jdbc 批量處理
批量處理允許將相關(guān)的sql語句分組到批處理中,并通過對數(shù)據(jù)庫的一次調(diào)用來提交它們,一次執(zhí)行完成與數(shù)據(jù)庫之間的交互。
一次向數(shù)據(jù)庫發(fā)送多個sql語句時,可以減少通信開銷,從而提高性能。
1. jdbc 批量處理方法
- 使用 databasemetadata.supportsbatchupdates() 方法來確定目標(biāo)數(shù)據(jù)庫是否支持批量更新處理。如果 jdbc 驅(qū)動程序支持此功能,該方法將返回 true。
- statement, preparedstatement 和 callablestatement 的 addbatch() 方法用于將單個語句添加到批處理。 executebatch()用于執(zhí)行組成批量的所有語句。
- executebatch() 返回一個整數(shù)數(shù)組,數(shù)組的每個元素表示相應(yīng)更新語句的更新計數(shù)。
- 就像將批處理語句添加到處理中一樣,可以使用 clearbatch() 方法刪除它們。此方法將刪除所有使用 addbatch() 方法添加的語句。但是,無法指定選擇某個要刪除的語句。
2. 使用 statement 批處理步驟
以下是使用 statement對象的批處理的典型步驟序列 -
- 使用 createstatement() 方法創(chuàng)建 statement 對象。
- 使用 setautocommit() 將自動提交設(shè)置為 false。
- 使用 addbatch() 方法在創(chuàng)建的 statement 對象上添加 sql 語句到批處理中。
- 在創(chuàng)建的 statement 對象上使用 executebatch() 方法執(zhí)行所有sql語句。
- 最后,使用 commit()方法提交所有更改。
3. 使用 statement 批處理范例
以下代碼片段提供了使用 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,'ruby', 'yang', 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,'java', 'lee', 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();
4. 使用 preparestatement 批處理步驟
以下是使用 preparestatement對象進行批處理的典型步驟順序:
- 使用占位符創(chuàng)建sql語句。
- 使用 preparestatement()方法創(chuàng)建 preparestatement對象。
- 使用 setautocommit()將自動提交設(shè)置為 false。
- 使用 addbatch()方法在創(chuàng)建的 statement對象上添加sql語句到批處理中。
- 在創(chuàng)建的 statement對象上使用 executebatch()方法執(zhí)行所有sql語句。
- 最后,使用 commit()方法提交所有更改。
5. 使用 preparedstatement 批處理范例
以下代碼段提供了使用 preparedstatement 對象進行批量更新的示例:
// create sql statement string sql = "insert into employees (id, first, last, age) " + "values(?, ?, ?, ?)"; // create preparestatement object preparedstatemen pstmt = conn.preparestatement(sql); //set auto-commit to false conn.setautocommit(false); // set the variables pstmt.setint( 1, 400 ); pstmt.setstring( 2, "jdbc" ); pstmt.setstring( 3, "li" ); pstmt.setint( 4, 33 ); // add it to the batch pstmt.addbatch(); // set the variables pstmt.setint( 1, 401 ); pstmt.setstring( 2, "csharp" ); pstmt.setstring( 3, "liang" ); 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();
相關(guān)文章
- JDBC 教程
- JDBC 驅(qū)動類型
- JDBC 連接數(shù)據(jù)庫范例
- JDBC 連接數(shù)據(jù)庫步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結(jié)果集
- JDBC Resultset 結(jié)果集范例
- JDBC 事務(wù)保存點范例
- Scala 教程
- Scala 簡介
- Scala 類和對象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴注入
- Spring 自動裝配
- Spring MVC教程
- Spring MVC表單標(biāo)簽庫
- Spring security