Rozwiązanie 1
Utwórz dwie różne instancje instrukcji dla dwóch operacji wstawiania.
Rozwiązanie 2
Jeśli chcesz ponownie użyć jednej instancji Statement, zamknij zasoby w Wreszcie blok. Właściwie zawsze dobrym pomysłem jest umieszczenie ścisłego oświadczenia w w końcu zablokuj lub po prostu użyj try-catch-resource że jdk7+ ma do zaoferowania.
Niezwiązane z Twoimi konkretnymi pytaniami
- Wysoce zalecane jest unikanie używania kodu java w pliku jsp. Wyszukaj terminy „jsp servlet mvc”.
- Użyj PreparedStatement zamiast Statement, aby uniknąć ataku wstrzykiwania sql.
EDYTUJ dla rozwiązania 1:
W pierwszym bloku próby:
Pod Statement myStatement = myConnection.createStatement();
dodaj Statement myStatementTwo = myConnection.createStatement();
W drugim bloku prób:
zmień myStatement.executeUpdate(sqlString);
do myStatementTwo.executeUpdate(sqlString);
Dodaj ostatni blok do pierwszego bloku prób i zamknij tam wszystkie zasoby. Edytowanie kodu jest prawie takie samo, jak przepisywanie wszystkiego od zera, przyniesie ci najwięcej korzyści, jeśli będziesz mógł to zrobić sam.
EDYTUJ po dostarczeniu przez OP kodu HTML i bazy danych
Twoje Dest_has_Categories Dest_idDest tabeli to auto_increment kolumna, ale jest to również klucz obcy odwołujący się do Dest klucz podstawowy idDest . Klucze obce tabeli referencyjnej (tabeli wspólnej) nie powinny być auto_inkrementacją. Pojawią się problemy, jeśli automatycznie inkrementowana wartość generowana przez DBMS nie istnieje w tabeli odniesienia.
Proszę, aby klucze obce nie były automatycznie inkrementowane, a po wstawieniu do tabeli referencyjnej Dest_has_Categories , wstaw istniejące kategorie identyfikator i Dest id.
Ponadto, gdy zmienisz kod, upewnij się, że korzystasz również z mojego Rozwiązania 2, aby uzyskać najlepsze praktyki.