解决方案1
为您的两个插入操作创建两个不同的Statement实例。
解决方案2
如果要重用一个Statement实例,请在 Final 模块中关闭资源。实际上,将close语句放在 finally
块中或简单地使用jdk7 +必须提供的 try-catch-resource 总是一个好主意。
与您的具体问题无关
- 强烈建议您避免在jsp文件中使用Java代码。搜索术语“ jsp servlet mvc”。
- 使用PreparedStatement而不是Statement来避免SQL注入攻击。
编辑解决方案1:
在您的第一个try块中:
在
Statement myStatement = myConnection.createStatement();
add下
Statement myStatementTwo = myConnection.createStatement();
在你的第二个try块:
改变
myStatement.executeUpdate(sqlString);
以
myStatementTwo.executeUpdate(sqlString);
在您的第一个try块中添加一个final块,并在那里关闭所有资源。编辑代码与从头开始重写所有内容几乎相同,如果您能自己做的话,它将对您最大的好处。
OP提供HTML代码和数据库后进行编辑
你 Dest_has_Categories 表的 Dest_idDest 是一个 AUTO_INCREMENT
列,但它也是一个外键引用 目的地 的主键 idDest 。参考表(联合表)的外键 不应
为auto_increment。如果参考表中不存在DBMS生成的自动递增值,则会出现问题。
请使外键不是auto_increment,并且当您插入参考表 Dest_has_Categories时 ,请插入现有 Categories
的ID和 Dest 的ID。
另外,更改代码时,请确保也使用我的解决方案2以获得最佳实践。



