JDBC的批量處理語句

2021-04-18 18:18:40 字數 1100 閱讀 7099

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);...

如果我們使用了jdbc的批量處理語句,就可以像下面那樣處理:

...preparedstatement pst 

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

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

注意: 1 第一種情況不可以新增查詢sql,因為executebatch()返回的是int ,如果把返回resultset的sql加入會引起異常; 2 第二種情況可以適用於沒有返回引數的儲存過程,如果儲存過程有返回引數,是不可以使用批量處理的!

原文:http://blog.csdn.net/muzhonger/archive/2007/07/20/1700936.aspx

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語句的批量傳參 針對第一種情況我們以前的做法可能是建立多個...