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