sql >> Base de Datos >  >> RDS >> Mysql

Inserte datos de formulario en dos tablas diferentes en la base de datos a través de la página jsp

Solución 1

Cree dos instancias de Declaración diferentes para sus dos operaciones de inserción.

Solución 2

Si desea reutilizar una sola instancia de Declaración, cierre los recursos en un Finalmente bloquear. De hecho, siempre es una buena idea poner la declaración de cierre en finalmente bloquear o simplemente usar try-catch-resource que jdk7+ tiene para ofrecer.

No relacionado con sus preguntas concretas

  • Se recomienda enfáticamente que evite usar código java en el archivo jsp. Busque los términos "jsp servlet mvc".
  • Use PreparedStatement en lugar de Statement para evitar ataques de inyección de SQL.

EDITAR para la solución 1:

En su bloque de primer intento:
Bajo Statement myStatement = myConnection.createStatement();
añadir Statement myStatementTwo = myConnection.createStatement();

En su segundo bloque de prueba:
cambie myStatement.executeUpdate(sqlString);
a myStatementTwo.executeUpdate(sqlString);

Agregue un bloque final para su primer bloque de prueba y cierre todos sus recursos allí. Editar su código es más o menos lo mismo que reescribir todo desde cero, le beneficiará más si puede hacerlo usted mismo.

EDITAR después de que OP proporcionó el código HTML y la base de datos

Tus Dest_has_Categories Dest_idDest de la tabla es un auto_incremento pero también es una clave externa que hace referencia a Dest Clave principal de idDest . Las claves foráneas de la tabla de referencia (tabla conjunta) no deben ser auto_incremento. Habrá problemas si el valor de incremento automático generado por DBMS no existe en la tabla de referencia.

Haga que las claves foráneas no se incrementen automáticamente y cuando las inserte en la tabla de referencia Dest_has_Categories , inserte Categorías existentes ID y destino de identificación de

Además, cuando cambie su código, asegúrese de usar también mi Solución 2 para las mejores prácticas.