在JDBC一次插入多個表、多條記錄
阿新 • • 發佈:2019-01-23
{
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=====");
}
}
}
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.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.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=====");
}
}
}