JDBC的批量處理語句

2022-09-03 06:36:10 字數 1122 閱讀 2719

jdbc的批量處理語句包括下面兩個方法:

addbatch(string):新增需要批量處理的sql語句或是引數;

executebatch();執行批量處理語句;

通常我們會遇到兩種批量執行sql語句的情況:

1 多條sql語句的批量處理;

2 乙個sql語句的批量傳參;

針對第一種情況我們以前的做法可能是建立多個statement,然後挨個execute,或者乾脆寫個pl/sql;寫過程是個明智的做法,但是我們還可以利用jdbc的批量處理語句進行處理,如下:

...statement st = conn.createstatement();

st.addbatch(sql1);

st.addbatch(sql2);

...st.addbatch(sqln);

st.executebatch();

...我們只建立一次statement,然後addbatch多條sql,最後一起執行就可以了,這種用法不多,感覺還不如寫個pl/sql!

但是第二種情況利用jdbc的批量處理語句就比較常見了,這一般用於preparedstatement,執行同一條語句,只是要傳多條引數,多用於批量增、刪、改!以前我們習慣使用下面迴圈的方式進行傳參。

...preparedstatement pst = conn.preparestatement(sql);

for(int i=0;i如果我們使用了jdbc的批量處理語句,就可以像下面那樣處理:

...preparedstatement pst = conn.preparestatement(sql);

for(int i=100;i<1101;i++)...

pst.executebatch();

...前者是每傳一次參就要執行一次,而後者只執行一次!我做了乙個測試,在批量處理的條數很少的時候二者的效率差別不是很大,但是超過50條,就有了差距,隨著條數的增多就越明顯!所以當我們遇到批量處理的時候,一定要優先考慮jdbc的批量處理語句。

注意:1 第一種情況不可以新增查詢sql,因為executebatch()返回的是int ,如果把返回resultset的sql加入會引起異常;

2 第二種情況可以適用於沒有返回引數的儲存過程,如果儲存過程有返回引數,是不可以使用批量處理的!

JDBC的批量處理語句

jdbc的批量處理語句包括下面兩個方法 addbatch string 新增需要批量處理的sql語句或是引數 executebatch 執行批量處理語句 通常我們會遇到兩種批量執行sql語句的情況 1 多條sql語句的批量處理 2 乙個sql語句的批量傳參 針對第一種情況我們以前的做法可能是建立多個...

JDBC的批量處理語句

jdbc的批量處理語句包括下面兩個方法 addbatch string 新增需要批量處理的sql語句或是引數 executebatch 執行批量處理語句 通常我們會遇到兩種批量執行sql語句的情況 1 多條sql語句的批量處理 2 乙個sql語句的批量傳參 針對第一種情況我們以前的做法可能是建立多個...

JDBC的批量處理語句

jdbc的批量處理語句包括下面兩個方法 addbatch string 新增需要批量處理的sql語句或是引數 executebatch 執行批量處理語句 通常我們會遇到兩種批量執行sql語句的情況 1 多條sql語句的批量處理 2 乙個sql語句的批量傳參 針對第一種情況我們以前的做法可能是建立多個...