我写了一个函数, 想要把删除和插入联合成一个事务, 要么全执行, 要么都不执行?
不知道 怎么写?
public boolean addBatch(int roleID, int permissionID[]) { try { // 先删除所有的数据, 然后再插入所有的数据
sSQL = "delete from RolesPermissions where RoleID=" + roleID;
stmt = conn.createStatement();
rs = stmt.executeQuery(sSQL); PreparedStatement stmt = conn
.prepareStatement("INSERT INTO RolesPermissions VALUES(?,?,?)"); for (int i = 0; i < permissionID.length; i++) {
stmt.setInt(2, roleID);
stmt.setInt(1, permissionID[i]);
stmt.addBatch();
}
int[] counts=stmt.executeBatch(); } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag; }

解决方案 »

  1.   

    给个例子:
    ***************************************public class OrderHandler extends HttpServlet {  public void doPost(HttpServletRequest req, HttpServletResponse res)
                                    throws ServletException, IOException {
        res.setContentType("text/plain");
        PrintWriter out = res.getWriter();    Connection con = null;
        try {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          con = DriverManager.getConnection("jdbc:odbc:ordersdb", "user", "passwd");      // Turn on transactions
          con.setAutoCommit(false);      Statement stmt = con.createStatement();
          stmt.executeUpdate(
            "UPDATE INVENTORY SET STOCK = (STOCK - 10) WHERE PRODUCTID = 7");
          stmt.executeUpdate(
            "UPDATE SHIPPING SET SHIPPED = (SHIPPED + 10) WHERE PRODUCTID = 7");      chargeCard();  // method doesn't actually exist...      con.commit();
          out.println("Order successful!  Thanks for your business!");
        }
        catch (Exception e) {
          // Any error is grounds for rollback
          try {
            con.rollback();
          }
          catch (SQLException ignored) { }
          out.println("Order failed. Please contact technical support.");
        }
        finally {
          // Clean up.
          try {
            if (con != null) con.close();
          }
          catch (SQLException ignored) { }
        }
      }
    }