最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

批量處理JDBC語句提高處理速度

 更新時(shí)間:2006年10月13日 00:00:00   作者:  

有時(shí)候JDBC運(yùn)行得不夠快,這使得有些程序員使用數(shù)據(jù)庫相關(guān)的存儲(chǔ)過程。作為一個(gè)替代方案,可以試試使用Statement 的批量處理特性看看能否同時(shí)執(zhí)行所有的SQL以提高速度。 
存儲(chǔ)過程的最簡單的形式就是包含一系列SQL語句的過程,將這些語句放在一起便于在同一個(gè)地方管理也可以提高速度。Statement 類可以包含一系列SQL語句,因此允許在同一個(gè)數(shù)據(jù)庫事務(wù)執(zhí)行所有的那些語句而不是執(zhí)行對(duì)數(shù)據(jù)庫的一系列調(diào)用。 
使用批量處理功能涉及下面的兩個(gè)方法: 
· addBatch(String) 方法 
· executeBatch方法 
如果你正在使用Statement 那么addBatch 方法可以接受一個(gè)通常的SQL語句,或者如果你在使用PreparedStatement ,那么也可以什么都不向它增加。executeBatch 方法執(zhí)行那些SQL語句并返回一個(gè)int值的數(shù)組,這個(gè)數(shù)組包含每個(gè)語句影響的數(shù)據(jù)的行數(shù)。如果將一個(gè)SELECT語句或者其他返回一個(gè)ResultSet的SQL語句放入批量處理中就會(huì)導(dǎo)致一個(gè)SQLException異常。 
關(guān)于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語法,但是可以有很多參數(shù),因此重寫上面的范例的一部分就可以得到下面的結(jié)果: 
// 注意這里沒有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(); 
如果你不知道你的語句要運(yùn)行多少次,那么這是一個(gè)很好的處理SQL代碼的方法。在不使用批量處理的情況下,如果添加50個(gè)用戶,那么性能就有影響,如果某個(gè)人寫了一個(gè)腳本添加一萬個(gè)用戶,程序可能變得很糟糕。添加批處理功能就可以幫助提高性能,而且在后面的那種情況下代碼的可讀性也更好。 

相關(guān)文章

最新評(píng)論

南昌县| 闵行区| 福泉市| 开封县| 永川市| 郸城县| 东山县| 乡城县| 峡江县| 石城县| 卓尼县| 崇义县| 井冈山市| 华亭县| 土默特左旗| 图木舒克市| 丰宁| 万宁市| 陇川县| 类乌齐县| 建湖县| 金川县| 玛沁县| 齐河县| 西平县| 淄博市| 九江市| 宁武县| 同仁县| 阿瓦提县| 和林格尔县| 丹寨县| 分宜县| 辽宁省| 城步| 湄潭县| 白水县| 左云县| 马龙县| 富民县| 汾阳市|