(十七)使用JDBC進行批處理

2021-08-20 16:54:59 字數 1365 閱讀 4933

目錄

當需要向資料庫中傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率;

使用jdbc進行批處理,實現批處理有兩種機制;

statement.addbatch(sql1) ; 

statement.addbatch(sql2) ;

...// 內部是 statement物件維護著乙個list物件,儲存著批處理的sql語句 ;

executebatch(); // 執行批處理sql語句:

clearbatch(); // 清楚批處理命令:即清除 list 中的sql語句 ;

優點:可以向資料庫傳送多條不同的sql語句 ;

缺點:sql語句沒有預編譯當多條sql語句僅僅是引數不同的時候,也必須呆呆的寫多條;

// 先將預編譯好的 sql 儲存到 preparestatement物件中,這時候還沒有存進 list 裡面 ;

preparestatement(sql);

// 每次呼叫preparestatement物件的set***x()方法,都覆蓋掉之前的sql語句 ;

// 但是我們呼叫set***x方法之前,就會將之前的sql語句新增進內部的list裡面,因此覆蓋也沒有事

preparedstatement.set***x(....) ;

// 將預編譯的sql語句,加到preparedstatment物件內部的list中;

preparedstatement.addbatch();

// 將預編譯的sql語句,加到preparedstatment物件內部的list中;

preparedstatement.addbatch();

executebatch(); // 執行批處理sql語句:

clearbatch(); // 清楚批處理命令:

優點:傳送是預編譯的sql語句,執行效率高;

缺點:只能應用在sql語句相同,但是引數不同的批處理裡面;適用於在同一張表中進行批量資料的操作;

用批處理運算元據庫,update()方法返回的是乙個陣列,裡面記錄著每一條sql語句影響的行數 ;

在進行批處理的時候,乙個批不要太大,否則會記憶體溢位,可以迴圈批處理;

mysql插入一千萬條資料大概要花3小時,而oracle只需要花6分鐘; 果然收費還是有收費的道理的 ;

使用JDBC進行批處理

業務場景 當需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率。實現批處理有兩種方式 第一種方式 使用 statement.addbatch sql connection conn jdbcutil.getconnection str...

使用JDBC進行批處理

當我們需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率 有兩種方式實現批處理 1.使用statement statement.addbatch sql 方法 新增sql語句 executebatch 方法 執行批處理命令 clear...

使用JDBC進行批處理

當需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應該採用jdbc的批處理機制,以提公升執行效率。方式一 statement.addbatch sql 可以傳送不同的sql語句 執行sql語句的方法 executebatch 清除批處理命令的方法 clearbatch con...