Entrada e itementrada

seguinte, fiz um frame pra o usuario entrar com o codigo de barra do produto no Jtextfield, apos isso um inputdialog pergunta o valor da entrada e apos outro imput dialog pergunta a qtd. caindo o conteudo na tabela. ateh ai esta ok.
o meu problema eh na hora de gravar no banco, quando eu insiro mais de um produto e vou salvar o itementrada cria varios codigoentrada. o correto era na tabela entrada tem codigo entrada 1, e na tabela itementrada 3 vezes codigoentrada = 1 no caso d eu inserir 3 produtos, não sei se esta dando pra entender o problema. espero q possam me ajudar, caso vcs saberem outra maneira de fazer isso sera de grande ajuda, segue o codigo

VENDADAO();

[quote] public void insereEntrada(double preco) throws Exception {
Connection con = SQLUtil.getConnection();

    //pegar ultimo codigo venda e fazer auto increment;
StringBuffer sql = new StringBuffer();
StringBuffer sql2 = new StringBuffer();
sql.append("select max(codigoEntrada) from entrada;");
PreparedStatement pstmt = con.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery();
rs.next();
int aux = rs.getInt(1);
aux = aux+1;
System.out.println("aux="+aux);
rs.close();
pstmt.close();

    //System.out.println("aux=" + aux);
    rs.close();
    pstmt.close();


    // inserir a venda
    sql2.append("insert into entrada (codigoEntrada,data,preco) values (" + aux + "," + "CURRENT_DATE," + preco + ");");
    pstmt = con.prepareStatement(sql2.toString());
    pstmt.execute();
}

          public void insereItemEntrada(Produto p,double precop, int qtd) throws Exception {

    Connection con = SQLUtil.getConnection();
    StringBuffer sql = new StringBuffer();
    StringBuffer sql2 = new StringBuffer(); //pega o ultimo codigo da venda
    sql2.append("select max(codigoEntrada) from itementrada;"); //codigo sql para pegar ultimo codigo
    PreparedStatement pstmt2 = con.prepareStatement(sql2.toString());

    ResultSet rs2 = pstmt2.executeQuery(); //executa codigo sql e joga na string
    rs2.next();

    int aux = rs2.getInt(1); //auxiliar cata ultimo codigo

    rs2.close();

    aux = aux + 1; // ultimo codigo + 1.
    sql.append("insert into itementrada (codigoEntrada,codigoProduto,preco,qtd) values (" + aux + "," + p.getCodigo()+","+precop +","+qtd+")");
    PreparedStatement pstmt = con.prepareStatement(sql.toString());
    pstmt.execute();
    //System.out.println(sql.toString());

}

[/quote]

BOTAO GRAVAR

[quote] Iterator i = insPro.iterator();
double soma = 0;
Produto pp = new Produto();

    while (i.hasNext()) {
        System.out.println("entrou no loop");
        pp = (Produto) i.next();

        soma = soma + (pc1);
        try {
            vd.insereItemEntrada(pp, pc1, qt1);
            //pd.insereItemEntrada(pp, pc1, qt1);
             
        } catch (Exception ex) {
        }
        try{
            vd.insereEntrada(soma);
            //pd.insereEntrada(pc1);
        }catch (Exception e) {
            
        }

    }

    // AQUI É PARA LIMPAR A TABELA
    DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
    modelo.setNumRows(0);
    jLabel6.setText("0"); //LIMPAR A JTEXTFIELDTOTAL

    insPro.clear(); //LIMPAR ARRAYLIST, POIS A VENDA JA ESTA NO BANCO.
    JOptionPane.showMessageDialog(null, "Pedido Realizado com Sucesso!");
    tf_barras.requestFocus();

[/quote]

pessoal, andei mexendo aki e o erro mudou agora se eu coloco 3 itens para ser adicionado e aparece 3 codigos de entrada diferente e 3 codigos diferente no item entrada… agora axo q o erro deve ser minimo pois o erro axo ki eh no insereentrada que esta criando uma entrada em cada loop segue abaixo o codigo.

botao gravar do form

VARIAVEIS GLOBAIS

[quote]VendaDAO vd= new VendaDAO();
ProdutoDAO pd = new ProdutoDAO();

double pc1 = 0;
int qt1 = 0;
double aux = 0;
double auxiliar=0;

ArrayList insPro = new ArrayList();

[/quote]

INSERE ENTRADAITEM NO VENDAdao

[quote]public void insereItemEntrada(Produto p,double precop, int qtd) throws Exception {

    Connection con = SQLUtil.getConnection();
    StringBuffer sql = new StringBuffer();
    StringBuffer sql2 = new StringBuffer(); //pega o ultimo codigo da venda
    sql2.append("select max(codigoEntrada) from entrada;"); //codigo sql para pegar ultimo codigo
    PreparedStatement pstmt2 = con.prepareStatement(sql2.toString());

    ResultSet rs2 = pstmt2.executeQuery(); //executa codigo sql e joga na string
    rs2.next();

    int aux = rs2.getInt(1); //auxiliar cata ultimo codigo

    rs2.close();

    aux = aux + 1; // ultimo codigo + 1.
    sql.append("insert into itementrada (codigoEntrada,codigoProduto,preco,qtd) values (" + aux + "," + p.getCodigo()+","+precop +","+qtd+")");
    PreparedStatement pstmt = con.prepareStatement(sql.toString());
    pstmt.execute();
    //System.out.println(sql.toString());

}

[/quote]

INSERE ENTRADA

[quote] public void insereEntrada(double preco) throws Exception {
Connection con = SQLUtil.getConnection();

    //pegar ultimo codigo venda e fazer auto increment;
StringBuffer sql = new StringBuffer();
StringBuffer sql2 = new StringBuffer();
sql.append("select max(codigoEntrada) from entrada;");
PreparedStatement pstmt = con.prepareStatement(sql.toString());
ResultSet rs = pstmt.executeQuery();
rs.next();
int aux = rs.getInt(1);
aux = aux+1;
System.out.println("aux="+aux);
rs.close();
pstmt.close();

    //System.out.println("aux=" + aux);
    rs.close();
    pstmt.close();


    // inserir a venda
    sql2.append("insert into entrada (codigoEntrada,data,preco) values (" + aux + "," + "CURRENT_DATE," + preco + ");");
    pstmt = con.prepareStatement(sql2.toString());
    pstmt.execute();

[/quote]

ops, coloquei o mesmo codigo … a diferenca do erro do primeiro erro para o segundo e que se eu coloco o insereitenentrada e o insere entrada no mesmo try aparece 3 codigos diferentes na entrada e no itementrada