在jdbc操作中,通過事務操作,一次可以插入多個表 ,多條記錄:
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);
}
}
在JDBC一次插入多個表、多條記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.