Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Insira dados de formulário em duas tabelas diferentes no banco de dados por meio da página jsp

Solução 1


Crie duas instâncias de instrução diferentes para suas duas operações de inserção.

Solução 2


Se você quiser reutilizar uma única instância de Statement, feche os recursos em um Finalmente quadra. Na verdade, é sempre uma boa ideia colocar a declaração de fechamento em finalmente bloquear ou simplesmente usar try-catch-resource que o jdk7+ tem a oferecer.

Não relacionado às suas perguntas concretas

  • É altamente recomendável que você evite usar código java no arquivo jsp. Pesquise os termos "jsp servlet mvc".
  • Use PreparedStatement em vez de Statement para evitar ataques de injeção de SQL.

EDITAR para a solução 1:


Em seu primeiro bloco try:
Em Statement myStatement = myConnection.createStatement();
adicionar Statement myStatementTwo = myConnection.createStatement();

Em seu segundo bloco try:
altere myStatement.executeUpdate(sqlString);
para myStatementTwo.executeUpdate(sqlString);

Adicione um bloco final para seu primeiro bloco de tentativa e feche todos os seus recursos lá. Editar seu código é praticamente o mesmo que reescrever tudo do zero, será mais benéfico para você se você puder fazer isso sozinho.

EDITAR depois que o OP forneceu código HTML e banco de dados


Suas Dest_has_Categories Dest_idDest da tabela é um auto_increment coluna, mas também é uma chave estrangeira que faz referência a Dest chave primária de idDest . As chaves estrangeiras da Tabela de Referência (tabela conjunta) não devem seja auto_increment. Haverá problemas se o valor incrementado automaticamente gerado pelo DBMS não existir na tabela de referência.

Por favor, faça com que as chaves estrangeiras não sejam auto_increment e quando você inserir na tabela de referência Dest_has_Categories , insira Categorias existentes id de e Destino id.

Além disso, quando você alterar seu código, certifique-se de usar também minha Solução 2 como prática recomendada.