Hỏi về tạo hóa đơn trong JSP

Em chào mọi người ,

Em đang bị kẹt ở đoạn tạo hóa đơn , mô hình là một hóa đơn sẽ có chi tiết hóa đơn nhưng em đang bị kẹt chưa biết làm sao , mô hình là đầu tiên tạo hóa đơn , lấy mã ID của nó để tạo chi tiết hóa đơn nhưng em vẫn chưa tìm được cách . Cách hiện tại của em là tạo xong hóa đơn --> lấy mã hóa đơn mới nhất trong database ra dùng nhưng cách này em thấy sẽ bị sai khi trong quá trình lấy ra có một người dùng khác tạo hóa đơn thì sẽ bị sai , bên ASP .NET có entity framework hỗ trợ còn jsp em chưa biết cách mong mọi người giúp đỡ

Em xin chân thành cảm ơn ạ .

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    long millis = System.currentTimeMillis();
    Date date = new Date(millis);
    System.out.println(formatter.format(date));
    String UserName = request.getParameter("UserName");

    Carts cart = (Carts) session.getAttribute("cart");
    if (cart == null) {
        cart = new Carts();
    }

    float ToTal = (float) cart.total();

    int ID = 1;
    int OrderID =0;
    try {

        Orders order = new Orders(ID, request.getParameter("RealName"), date, request.getParameter("Address"), request.getParameter("Email"), request.getParameter("Note"), UserName, request.getParameter("PayMethod"), ToTal);
        Order_DAO.insertBill(order);
        OrderID=  Order_DAO.getLastestID();
        for (Item it : cart.getCartItems()) {
            OrderDetails detail = new OrderDetails(ID, OrderID, it.getProduct().getFullName(), it.getQuantity(), it.getProduct().getPrice(), it.getProduct().getPrice() * it.getQuantity());
            OrderDetail_DAO.insertBillDetail(detail);
         
        }
        session.setAttribute("cart", null);
        out.print("OK");
    } catch (SQLException e) {
        e.printStackTrace();
        out.print(e.getMessage());
    }

UPDATE : Em đã giải quyết được , cách cho ai tham khảo

public static int insertBill(Orders bill) throws SQLException {
    Connection connection = DBConnect.getConnection();
    String sql = "INSERT INTO Orders VALUES(?,?,?,?,?,?,?,?,?)";
    PreparedStatement ps = connection.prepareStatement(sql);
    ps.setInt(1, bill.getID());
    ps.setString(2, bill.getCreator());
    ps.setDate(3, (Date) bill.getDateCreate());
    ps.setString(4, bill.getAddress());
    ps.setString(5, bill.getEmail());
    ps.setString(6, bill.getNote());
    ps.setString(7, bill.getUserName());
    ps.setString(8, bill.getPayMethod());
    ps.setFloat(9, bill.getTotal());
    ps.executeUpdate();

    ResultSet rs = ps.getGeneratedKeys();
    int generatedKey = 0;
    if (rs.next()) {
        generatedKey = rs.getInt(1);
    }
    System.out.println(generatedKey);
    return generatedKey;

}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?