案例:mysql
工具方法:sql
public static Connection getConnection(){ try { Class.forName("com.mysql.jdbc.Driver"); ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","squirrel","xiaoyang"); } catch (Exception e) { e.printStackTrace(); } return ct; } /**釋放數據庫連接資源:注意數據庫資源關閉的順序*/ public static void closeConnection(){ try { //注意關閉數據庫資源的前後順序 if(rs!=null){ rs.close(); }if(ps!=null){ ps.close(); }if(ct!=null){ ct.close(); } } catch (SQLException e) { e.printStackTrace(); } }
測試方法:數據庫
/** * PreparedStatement批量執行sql */ public static void excuteBatchInsertDatabase(){ ct=getConnection(); try { ct.setAutoCommit(false); ps=ct.prepareStatement("insert into user(name,passwd,age,gender) values(?,?,?,?)"); ps.setString(1, "BBBB"); ps.setString(2, "BBBB"); ps.setInt(3, 20); ps.setString(4, "F"); ps.addBatch(); ps.setString(1, "BBBB"); ps.setString(2, "BBBB"); ps.setInt(3, 20); ps.setString(4, "F"); ps.addBatch(); /** * 等價於sql語句: * insert into user(name,passwd,age,gender) values * ("BBBB","BBBB",20,'F'), * ("BBBB","BBBB",20,'F'); */ ps.executeBatch(); //批量執行sql,避免所以單次的insert操做創建多個Connection浪費資源 ct.commit(); } catch (Exception e) { e.printStackTrace(); try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally{ closeConnection(); } }
執行excuteBatchInsertDatabase()方法數據庫記錄:工具
數據庫數據記錄代表:sql語句批量執行成功測試
注意:ui
批量查詢最好交由一個事務組控制,若是出現操做異常能夠進行事務回滾,不至於形成部分數據更新部分數據更新失敗的尷尬局面,避免你髒數據污染數據庫3d