亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

JDBC 批處理(Batch)

批處理允許您將相關(guān)的SQL語(yǔ)句分組到一個(gè)批中,并通過對(duì)數(shù)據(jù)庫(kù)的一次調(diào)用提交它們。

當(dāng)您一次將多個(gè)SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)時(shí),可以減少通信開銷,從而提高性能。

  • JDBC 驅(qū)動(dòng)程序不需要支持這個(gè)特性。您應(yīng)該使用 DatabaseMetaData.supportsBatchUpdates ()方法來(lái)確定目標(biāo)數(shù)據(jù)庫(kù)是否支持批量更新處理。如果 JDBC 驅(qū)動(dòng)程序支持此特性,則該方法返回 true。

  • Statement、 PreparedStatement 和 CallableStatement 的 addBatch ()方法用于向批處理添加單個(gè)語(yǔ)句。executeBatch ()用于開始執(zhí)行組合在一起的所有語(yǔ)句。

  • executeBatch()返回一個(gè)整數(shù)數(shù)組,數(shù)組中的每個(gè)元素表示相應(yīng)update語(yǔ)句的更新計(jì)數(shù)。

  • 正如您可以將語(yǔ)句添加到批處理中進(jìn)行處理一樣,您也可以使用 clearBatch ()方法刪除它們。此方法刪除所有添加了 addBatch ()方法的語(yǔ)句。但是,不能選擇要?jiǎng)h除的語(yǔ)句。

使用語(yǔ)句對(duì)象進(jìn)行批處理

這是將批處理與Statement對(duì)象一起使用的典型步驟序列-

  • 使用這兩種createStatement()方法創(chuàng)建 Statement 對(duì)象。

  • 使用 setAutoCommit ()將 auto-commit 設(shè)置為 false。

  • 在創(chuàng)建的語(yǔ)句對(duì)象上使用addBatch()方法向批處理中添加任意數(shù)量的SQL語(yǔ)句。

  • 對(duì)所創(chuàng)建的語(yǔ)句對(duì)象使用 executeBatch ()方法執(zhí)行所有 SQL 語(yǔ)句。

  • 最后,使用commit()方法提交所有更改。

實(shí)例

以下代碼段提供了使用Statement對(duì)象進(jìn)行批量更新的示例-

// 創(chuàng)建語(yǔ)句對(duì)象
Statement stmt = conn.createStatement();

// 將自動(dòng)提交設(shè)置為false
conn.setAutoCommit(false);

// 創(chuàng)建SQL語(yǔ)句
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(200,'Zia', 'Ali', 30)";
// 在批處理中添加上面的SQL語(yǔ)句。
stmt.addBatch(SQL);

// 再創(chuàng)建一條SQL語(yǔ)句
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(201,'Raj', 'Kumar', 35)";
// 在批處理中添加上面的SQL語(yǔ)句。
stmt.addBatch(SQL);

// 再創(chuàng)建一條SQL語(yǔ)句
String SQL = "UPDATE Employees SET age = 35 " +
             "WHERE id = 100";
// 在批處理中添加上面的SQL語(yǔ)句。
stmt.addBatch(SQL);

// 創(chuàng)建一個(gè)int []來(lái)保存返回的值
int[] count = stmt.executeBatch();

//明確提交語(yǔ)句以應(yīng)用更改
conn.commit();

為了更好地理解,讓我們研究批處理示例代碼。

使用PrepareStatement對(duì)象進(jìn)行批處理

這是將批處理與PrepareStatement對(duì)象一起使用的典型步驟序列-

  1. 使用占位符創(chuàng)建SQL語(yǔ)句。

  2. 使用任一 PrepareStatement()方法創(chuàng)建PrepareStatement對(duì)象。

  3. 使用 setAutoCommit ()將 auto-commit 設(shè)置為 false。

  4. 在創(chuàng)建的語(yǔ)句對(duì)象上使用 addBatch ()方法添加盡可能多的 SQL 語(yǔ)句到批處理中。

  5. 對(duì)所創(chuàng)建的語(yǔ)句對(duì)象使用 executeBatch ()方法執(zhí)行所有 SQL 語(yǔ)句。

  6. 最后,使用commit()方法提交所有更改。

以下代碼段提供了使用PrepareStatement對(duì)象進(jìn)行批量更新的示例-

// 創(chuàng)建SQL語(yǔ)句
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(?, ?, ?, ?)";

// 創(chuàng)建PrepareStatement對(duì)象
PreparedStatemen pstmt = conn.prepareStatement(SQL);

//將自動(dòng)提交設(shè)置為false
conn.setAutoCommit(false);

// 設(shè)置變量
pstmt.setInt( 1, 400 );
pstmt.setString( 2, "Pappu" );
pstmt.setString( 3, "Singh" );
pstmt.setInt( 4, 33 );
// 將其添加到批
pstmt.addBatch();

// 設(shè)置變量
pstmt.setInt( 1, 401 );
pstmt.setString( 2, "Pawan" );
pstmt.setString( 3, "Singh" );
pstmt.setInt( 4, 31 );
// 將其添加到批
pstmt.addBatch();

//添加更多批
.
.
.
.
//創(chuàng)建一個(gè)int []來(lái)保存返回的值
int[] count = stmt.executeBatch();

//明確提交語(yǔ)句以應(yīng)用更改
conn.commit();

為了更好地理解,讓我們研究批處理示例代碼。