使用JDBC一次插入多個表、多條記錄
阿新 • • 發佈:2019-01-07
程式碼如下:
public static void insertBatch() { int count[]; int count1[]; Boolean isinsert = false; Connection con = null; PreparedStatement pst = null; PreparedStatement pst1 = null; try { con = getCon(); con.setAutoCommit(false); // 需要用到事務,不能讓他自動提交,需要手動提交 pst = con.prepareStatement(INSERT_SQL); // INSERT_SQL表示對一張表的插入記錄 pst1 = con.prepareStatement(INSERT_SQL1); // INSERT_SQL表示對另一張表的插入記錄 pst.setString(1, "name1"); pst.setInt(2, 26); pst.setString(3, "job1"); pst.addBatch(); pst.setString(1, "name2"); pst.setInt(2, 12); pst.setString(3, "job2"); pst.addBatch(); -------可以對pst進行更多的插入----------- pst1.setString(1, "name--1"); pst1.setInt(2, 26); pst1.setString(3, "job--1"); pst1.addBatch(); pst1.setString(1, "name--2"); pst1.setInt(2, 26); pst1.setString(3, "job--2"); pst1.addBatch(); -------可以對pst1進行更多的插入----------- count = pst.executeBatch(); count1 = pst1.executeBatch(); con.commit(); //提交事務,這個非常重要 for(int i : count){ if(i == 0) { con.rollback(); // 回滾,非常重要 System.out.println("======出現異常,回滾========="); } } for(int i : count1){ if(i == 0) { con.rollback(); // 回滾,非常重要 System.out.println("==111====出現異常,回滾====111====="); } } } catch (SQLException e) { try { con.rollback(); // 回滾,非常重要 } catch (SQLException e1) { e1.printStackTrace(); } System.out.println("------出現異常,回滾----------"); e.printStackTrace(); } finally { cloCon(con,pst); } }
轉自【http://www.blogjava.net/yxhxj2006/archive/2012/07/17/383310.html】