MySQL中提供了JDBC的addBatch方法,允許在一個事務(wù)內(nèi)批量執(zhí)行多個SQL語句,這種方式通常比逐個執(zhí)行SQL語句更加高效。
在使用addBatch方法之前,需要先進行數(shù)據(jù)庫的連接,具體的操作方式如下:
// 加載JDBC驅(qū)動 Class.forName("com.mysql.cj.jdbc.Driver"); // 建立連接 Connection conn = DriverManager.getConnection(url, user, password);
接下來我們通過一個例子來演示如何使用addBatch方法批量執(zhí)行SQL語句:
// 構(gòu)建SQL語句數(shù)組 String[] sqls = new String[]{ "insert into users values ('001', 'Tom', 22)", "insert into users values ('002', 'Jerry', 20)", "update users set age=23 where id='001'" }; // 創(chuàng)建Statement對象 Statement stmt = conn.createStatement(); // 添加SQL語句到批處理隊列中 for(String sql : sqls){ stmt.addBatch(sql); } // 執(zhí)行批處理 int[] affectedRows = stmt.executeBatch(); // 提交事務(wù) conn.commit(); // 關(guān)閉連接 stmt.close(); conn.close();
上述代碼中,我們首先創(chuàng)建了一個包含三條SQL語句的數(shù)組,然后創(chuàng)建了一個Statement對象,逐個將SQL語句添加到批處理隊列中,最后執(zhí)行批處理并提交事務(wù)。
需要注意的是,如果執(zhí)行批處理時發(fā)生異常,那么會拋出SQLException異常,并且需要調(diào)用Connection的rollback()方法回滾事務(wù)。另外,雖然批處理可以提高SQL執(zhí)行效率,但是也要注意不要一次性執(zhí)行過多的SQL語句,否則可能會導(dǎo)致內(nèi)存溢出等問題。