批量处理jdbc语句提高处理速度
生活随笔
收集整理的這篇文章主要介紹了
批量处理jdbc语句提高处理速度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候jdbc運行得不夠快,這使得有些程序員使用數據庫相關的存儲過程。作為一個替代方案,可以試試使用statement?的批量處理特性看看能否同時執行所有的sql以提高速度。?存儲過程的最簡單的形式就是包含一系列sql語句的過程,將這些語句放在一起便于在同一個地方管理也可以提高速度。statement?類可以包含一系列sql語句,因此允許在同一個數據庫事務執行所有的那些語句而不是執行對數據庫的一系列調用。?使用批量處理功能涉及下面的兩個方法:???addbatch(string)?方法???executebatch方法?如果你正在使用statement?那么addbatch?方法可以接受一個通常的sql語句,或者如果你在使用preparedstatement?,那么也可以什么都不向它增加。executebatch?方法執行那些sql語句并返回一個int值的數組,這個數組包含每個語句影響的數據的行數。如果將一個select語句或者其他返回一個resultset的sql語句放入批量處理中就會導致一個sqlexception異常。?關于java.sql.statement?的簡單范例可以是:?statement?stmt?=?conn.createstatement();stmt.insert("delete?from?users");stmt.insert("insert?into?users?values("rod",?37,?"circle")");stmt.insert("insert?into?users?values("jane",?33,?"triangle")");stmt.insert("insert?into?users?values("freddy",?29,?"square")");int[]?counts?=?stmt.executebatch();?preparedstatement?有些不同,它只能處理一部分sql語法,但是可以有很多參數,因此重寫上面的范例的一部分就可以得到下面的結果:?//?注意這里沒有delete語句preparedstatement?stmt?=?conn.preparestatement("insert?into?users?values(?,?,?)");user[?]?users?=?...;for(int?i=0;?i<users.length;?i++)?{stmt.setint(1,?users[i].getname());stmt.setint(2,?users[i].getage());stmt.setint(3,?users[i].getshape());stmt.addbatch(?);}int[?]?counts?=?stmt.executebatch();?如果你不知道你的語句要運行多少次,那么這是一個很好的處理sql代碼的方法。在不使用批量處理的情況下,如果添加50個用戶,那么性能就有影響,如果某個人寫了一個腳本添加一萬個用戶,程序可能變得很糟糕。添加批處理功能就可以幫助提高性能,而且在后面的那種情況下代碼的可讀性也更好。?
轉載于:https://www.cnblogs.com/kangderui/archive/2009/12/30/1635636.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的批量处理jdbc语句提高处理速度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读“变革中的思索”
- 下一篇: 谈谈DictionaryT1,T2和Li