Giải pháp 1
Tạo hai phiên bản Statement khác nhau cho hai hoạt động chèn của bạn.
Giải pháp 2
Nếu bạn muốn sử dụng lại một phiên bản Tuyên bố duy nhất, hãy đóng tài nguyên trong Cuối cùng khối. Trên thực tế, luôn luôn là một ý kiến hay khi đặt câu lệnh gần nhất vào cuối cùng chặn hoặc đơn giản là sử dụng try-catch-resource mà jdk7 + phải cung cấp.
Không liên quan đến các câu hỏi cụ thể của bạn
- Bạn nên tránh sử dụng mã java trong tệp jsp. Tìm kiếm các cụm từ "jsp servlet mvc".
- Sử dụng PreparedStatement thay vì Statement để tránh bị tấn công sql.
CHỈNH SỬA cho giải pháp 1:
Trong khối thử đầu tiên của bạn:
Trong Statement myStatement = myConnection.createStatement();
thêm Statement myStatementTwo = myConnection.createStatement();
Trong khối thử thứ hai của bạn:
thay đổi myStatement.executeUpdate(sqlString);
thành myStatementTwo.executeUpdate(sqlString);
Thêm một khối cuối cùng cho khối thử đầu tiên của bạn và đóng tất cả tài nguyên của bạn ở đó. Việc chỉnh sửa mã của bạn cũng giống như việc viết lại mọi thứ từ đầu, sẽ có lợi nhất cho bạn nếu bạn có thể tự mình làm điều đó.
CHỈNH SỬA sau khi OP cung cấp mã HTML và cơ sở dữ liệu
Dest_has_Categories của bạn Dest_idDest của bảng là auto_increment nhưng nó cũng là một khóa ngoại tham chiếu đến URL khóa chính của idDest . Các khóa ngoại của Bảng tham chiếu (bảng chung) không nên được auto_increment. Sẽ có vấn đề nếu giá trị gia tăng tự động do DBMS tạo ra không tồn tại trong bảng tham chiếu.
Vui lòng đặt các khóa ngoại không phải auto_increment và khi bạn chèn vào bảng tham chiếu Dest_has_Categories , vui lòng chèn Danh mục hiện có Id của và URL id của.
Ngoài ra, khi bạn thay đổi mã của mình, hãy đảm bảo sử dụng Giải pháp 2 của tôi để có phương pháp tốt nhất.