1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Inserindo dados em 3 tabelas relacionadas

Olá, estou com um problema ao inserir dados em 3 tabelas que se relacionam. Tenho tabela Pagamento, ItensVenda e Venda. Venda tem chave estrangeira de fk_id_itensVenda e fk_id_pagamento.

No meu projeto java não sei como fazer esse insert no meu DAO, sendo que esse insert acontece ao mesmo tempo nas tabelas quando eu efetuo uma venda, ai eu insiro nas 3 tabelas. Consegui apenas inserir na tabela pagamento e itensVenda, porém na Venda ele não consegue pegar as fk's.

https://www.filepicker.io/api/file/tpIZoYfrQlziMfxHChsp

meu dao venda:

public boolean cadastrarDAO(Venda venda){

        boolean retorno = false;
        con = Config.abrirConexao();
        String sql = "INSERT INTO venda ("
               // + "id_itensVenda,"
               // + "id_produto,"
                + "id_funcionario,"
               // + "id_pagamento,"
                + "subtotal_venda,"
                + "desconto_venda,"
                + "total_venda,"
                + "data_venda) VALUES (?,?,?,?,?)";               

        PreparedStatement stmt = null;
        try{
        stmt = con.prepareStatement(sql);
        stmt.setString(1, venda.getIdFuncionario());
        stmt.setFloat(2, venda.getSubtotal());
        stmt.setFloat(3, venda.getDesconto());
        stmt.setFloat(4, venda.getTotal());
        stmt.setString(5, dateFormat.format(venda.getDataVenda()));
        //stmt.setString(6, venda.getIdFuncionario());
        stmt.executeUpdate();
        retorno = true;                
        } catch (SQLException ex) {
            Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, ex);
            retorno = false;
        } finally {
            try {    
        stmt.close();
        con.close();          
        } catch (SQLException ex) {
                Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, ex);
            }            
        }
        return retorno;
    }
  • Deixa ver se entendi. O ID dos seus registros são AutoIncrement, ou seja, eles são criados automaticamente pelo banco de dados? Se isso for verdade, quando inserir o registro você precisa recuperar o ID que acabou de ser gerado, para então utilizar nos registros filhos. É isso?

    Douglas Junior   28 de abr de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java jsf sql mysql dao ou faça a sua própria pergunta.