當(dāng)需要向數(shù)據(jù)庫(kù)發(fā)送一批sql指令時(shí),應(yīng)該避免一條一條的向數(shù)據(jù)庫(kù)發(fā)送命令,而應(yīng)該采用jdbc的批處理機(jī)制,以提升效率。
jdbc提供兩種批處理機(jī)制:
第一種:
statement.addbatch(sql);,這個(gè)方法返回一個(gè)list集合,執(zhí)行批處理指令------executeBatch(),之后調(diào)用clearBatch(),清理批。
Connection conn = null;Statement st = null;ResultSet rs = null;try {conn = JdbcUtil.getConnection();String sql1 = "insert into user(name,passWord,email,birthday) values('kkk','123','abc@sina.com','1978-08-08')";String sql2 = "update user set password='123456' where id=3";st = conn.createStatement();st.addBatch(sql1); //把SQL語(yǔ)句加入到批命令中st.addBatch(sql2); //把SQL語(yǔ)句加入到批命令中st.executeBatch();} finally{ JdbcUtil.free(conn, st, rs);}采用這種方法的缺點(diǎn)是:沒有預(yù)編譯sql語(yǔ)句,還有就是,當(dāng)要向數(shù)據(jù)庫(kù)發(fā)送多條命令相同而參數(shù)不同的sql指令是,需要重復(fù)寫很多次sql指令,過(guò)于繁瑣。第二種:
PReparedStatement.addBatch(),優(yōu)點(diǎn):發(fā)送的是預(yù)編譯后的SQL語(yǔ)句,執(zhí)行效率高。缺點(diǎn):只能應(yīng)用在SQL語(yǔ)句相同,但參數(shù)不同的批處理中。因此此種形式的批處理經(jīng)常用于在同一個(gè)表中批量插入數(shù)據(jù),或批量更新表的數(shù)據(jù)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注