Řešení 1
Vytvořte dvě různé instance příkazu pro vaše dvě operace vložení.
Řešení 2
Pokud chcete znovu použít jednu instanci příkazu, zavřete prostředky v Konečně blok. Ve skutečnosti je vždy dobrý nápad vložit zavírací příkaz do konečně blokovat nebo jednoduše použít try-catch-resource které jdk7+ nabízí.
Nesouvisí s vašimi konkrétními otázkami
- Důrazně doporučujeme nepoužívat kód Java v souboru jsp. Vyhledejte výrazy "jsp servlet mvc".
- Použijte PreparedStatement místo Statement, abyste se vyhnuli útoku SQL injection.
UPRAVIT pro řešení 1:
V bloku prvního pokusu:
V části Statement myStatement = myConnection.createStatement();
přidat Statement myStatementTwo = myConnection.createStatement();
V bloku druhého pokusu:
změňte myStatement.executeUpdate(sqlString);
to myStatementTwo.executeUpdate(sqlString);
Přidejte poslední blok pro svůj první pokusný blok a zavřete tam všechny zdroje. Úprava kódu je v podstatě stejná jako přepisování všeho od nuly. Největší užitek vám přinese, pokud to dokážete sami.
UPRAVIT poté, co OP poskytl HTML kód a databázi
Vaše Dest_has_Categories Dest_idDest tabulky je auto_increment ale je to také cizí klíč odkazující na Cíl Primární klíč uživatele idDest . Cizí klíče referenční tabulky (spojené tabulky) by neměly být auto_increment. Pokud v referenční tabulce neexistuje automaticky inkrementovaná hodnota generovaná DBMS, nastanou problémy.
Zajistěte, aby se cizí klíče nezvyšovaly automaticky a při vkládání do referenční tabulky Dest_has_Categories , vložte prosím stávající kategorie ID a Cíl id.
Když změníte svůj kód, nezapomeňte také použít moje řešení 2 jako osvědčený postup.