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