Inserção JTable

Olá pessoal to com um problema…nao estou conseguindo resolve-lo à dias…
gostaria que me dessem uma ajuda…

Bom eu tenho duas tabelas no banco …
uma eh NotaFiscal e a outra ProdutoItens…
A tabela ProdutoItens recebe como FK ah Pk da tabela Nf …
bom, eu to fazendo assim :

String codigo = "";
      String qtdLevou = "";
      String Total = "";
      
      String numero =  nf.getText();
      String data1 =  data.getText();
      String serie1 =  serie.getText();
      String valor1 =  valor.getText(); 
             
      int tabela = jTable2.getRowCount();
        
        for(int j = 0 ; j<tabela ;j++ ){
            
          codigo += String.valueOf(jTable2.getModel().getValueAt(j,0));
          qtdLevou += String.valueOf(jTable2.getModel().getValueAt(j,2));
          Total += String.valueOf(jTable2.getModel().getValueAt(j,4));
          
        }
      
      Produtos pd = new Produtos(numero, codigo, qtdLevou, Total);
       NotaFiscal nf = new NotaFiscal(numero, data1, serie1, valor1);
       banco.ProdItens(nf, pd);

o problema eh que dessa forma, qnd tem mais de uma linha ta jTable… ele nao inseri todas… inseri somente a primeira…
eu tentei colocar o
//Produtos pd = new Produtos(numero, codigo, qtdLevou, Total);
dentro do for…
mas no //banco.ProdItens(nf, pd); nao reconhece o objeto pd…

e no pra inserir no banco assim :

public void ProdItens(NotaFiscal nf, Produtos p){
     if(conn){
         if(connection != null){
             try{
                 //connection.setAutoCommit(false);
                 ps = connection.prepareStatement( "insert into notaFiscal(numero, "+
                         " data, serie, valor) values(?,?,?,?)");
                 PreparedStatement ps2 = connection.prepareStatement("insert into "+
                         " ProdutoItens(numeroNotaFiscal, codigoProduto, qtdLevou, "+
                         "  Total) values(?,?,?,?)");
                                  
                                                                                                             
                 ps.setInt(1,nf.getNumero());
                 ps.setString(2,nf.getData());
                 ps.setString(3,nf.getSerie());
                 ps.setString(4,nf.getValor());
                              
                 ps2.setInt(1,p.getNumeroNotaFiscal());
                 ps2.setString(2,p.getCodigo());
                 ps2.setString(3,p.getQtdLevou());
                 ps2.setString(4,p.getTotal());
                              
                 ps.executeUpdate(); 
                 ps2.executeUpdate();
                 
                //connection.commit(); 
                             
                 JOptionPane.showMessageDialog(null,"Sucesso!!!!mah");
             } catch(SQLException e){
          	      System.out.println(e.getMessage());
          		}
         }        
     }		
 }

como eu posso fazer???
vlw abraço…

Amigo não sei se entendi, eu entendi isso:
Produtos pd ;
NotaFiscal nf;
for(int j = 0 ; j<tabela ;j++ ){

       codigo += String.valueOf(jTable2.getModel().getValueAt(j,0));
       qtdLevou += String.valueOf(jTable2.getModel().getValueAt(j,2));
       Total += String.valueOf(jTable2.getModel().getValueAt(j,4));

pd = new Produtos(numero, codigo, qtdLevou, Total);
nf = new NotaFiscal(numero, data1, serie1, valor1);
banco.ProdItens(nf, pd);
}

Flw…

td dentro do for axo q nao da certo =/
… ele tem que salvar todas as linhas da jTable com o codigo da nf …
vlw

alguem saberia como fazer isso ???

obrigado…

Produtos pd ;
NotaFiscal nf = new NotaFiscal(numero, data1, serie1, valor1);
for(int j = 0 ; j<tabela ;j++ ){

codigo += String.valueOf(jTable2.getModel().getValueAt(j,0));
qtdLevou += String.valueOf(jTable2.getModel().getValueAt(j,2));
Total += String.valueOf(jTable2.getModel().getValueAt(j,4));

pd = new Produtos(numero, codigo, qtdLevou, Total);
banco.ProdItens(nf, pd);
} 

Olá …
vixiii tb nao deu certo…
ele adiciona a primeira linha da jTable… mas as outras nao …
se tiver tres linhas ele adiciona primeira e nas outras aparece esse erro:
General error
General error

nossa ta dificil de resolver esse …
abraço …
qqr coisa se tiver alguma ideia coloka aí …

Colega,

Agora que reparei que vc está usando isso para pegar os elementos
da table

 codigo += String.valueOf(jTable2.getModel().getValueAt(j,0));
 qtdLevou += String.valueOf(jTable2.getModel().getValueAt(j,2));
 Total += String.valueOf(jTable2.getModel().getValueAt(j,4));

Acredido que vc não quer acrescentar os valores sem apagar o antigo…

Acho que isso iria resolver…

 codigo = jTable2.getValueAt(j,0).toString();
 qtdLevou = jTable2.getValueAt(j,2).toString();
 Total = jTable2.getValueAt(j,4).toString();

É mto complicador ver assim pelo fórum… :stuck_out_tongue:

flw

[]´s

como assim paulo ??
sem apagar os antigos …
não ta dando certo tb…=/

ta assim :

 String codigo = "";
      String qtdLevou = "";
      String Total = "";
      
      String numero =  nf.getText();
      String data1 =  data.getText();
      String serie1 =  serie.getText();
      String valor1 =  valor.getText(); 
      
      
      
      
       int tabela = jTable2.getRowCount();
         
        Produtos pd;
        NotaFiscal nf = new NotaFiscal(numero, data1, serie1, valor1);
        
        for(int j = 0 ; j<tabela ;j++ ){
            
          codigo = jTable2.getValueAt(j,0).toString();
          qtdLevou = jTable2.getValueAt(j,2).toString();
          Total = jTable2.getValueAt(j,4).toString();
          
          
          pd = new Produtos(numero, codigo, qtdLevou, Total);
          banco.ProdItens(nf, pd); 
          
          
       }

essa parte de inserção ta certa ???

public void ProdItens(NotaFiscal nf, Produtos p){
     if(conn){
         if(connection != null){
             try{
                 ps = connection.prepareStatement( "insert into notaFiscal(numero, "+
                         " data, serie, valor) values(?,?,?,?)");
                 PreparedStatement ps2 = connection.prepareStatement("insert into "+
                         " ProdutoItens(numeroNotaFiscal, codigoProduto, qtdLevou, "+
                         "  Total) values(?,?,?,?)");
                             
                                                                                                             
                 ps.setInt(1,nf.getNumero());
                 ps.setString(2,nf.getData());
                 ps.setString(3,nf.getSerie());
                 ps.setString(4,nf.getValor());
                              
                 ps2.setInt(1,p.getNumeroNotaFiscal());
                 ps2.setString(2,p.getCodigo());
                 ps2.setString(3,p.getQtdLevou());
                 ps2.setString(4,p.getTotal());
                 
                 
                              
                 ps.executeUpdate(); 
                 ps2.executeUpdate();
                 
                                             
                 JOptionPane.showMessageDialog(null,"Sucesso!!!!mah");
             } catch(SQLException e){
          	      System.out.println(e.getMessage());
          		}
         }        
     }		
 }

vlw amigo…

Help …

Me cola o erro inteiro, por favor…

tipo ele soh ta adicionando a primeir linha do jTable…
e da esse erro nas outras …

vlw veio

Faz assim:

catch(SQLException e){
             e.printStackTrace();
           		}

Assim ele mostra todo caminho do erro…

java.sql.SQLException: General error
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6987)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3150)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:136)
        at oficina.Banco.ProdItens(Banco.java:221)
        at oficina.Vendas1.jButton3ActionPerformed(Vendas1.java:1017)
        at oficina.Vendas1.access$1100(Vendas1.java:20)
        at oficina.Vendas1$12.actionPerformed(Vendas1.java:440)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
        at java.awt.Component.processMouseEvent(Component.java:5488)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
        at java.awt.Component.processEvent(Component.java:5253)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
General error
        at java.awt.Window.dispatchEventImpl(Window.java:1766)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

vlw :thumbup:

:shock:
Nunca vi erro igual hahahahahaha… :slight_smile:

Essa linha:

at oficina.Banco.ProdItens(Banco.java:221)

Aponta para onde na classe ProdItens???

que linha é essa?

pra essa

serah que precisa usar commit ???

Acho que não, pois ele insere normalmente na primeira vez.

Sobre esse erro eu não sei nd. :frowning:
Mas assim cara, se não encontrar sobre esse erro na net, faz assim
verifique se nenhuma das variáveis está indo como null
Tb tente inverter.

ps2.executeUpdate();
ps.executeUpdate(); 

Se o erro continuar em:

 ps.executeUpdate(); 

Veja a diferença no inicio:

             ps = connection.prepareStatement( "insert into notaFiscal(numero, "+
                          " data, serie, valor) values(?,?,?,?)");
                  PreparedStatement ps2 = connection.prepareStatement("insert into "+
                          " ProdutoItens(numeroNotaFiscal, codigoProduto, qtdLevou, "+
                          "  Total) values(?,?,?,?)");

Se não der certo eu não posso mais tentar ajudá-lo, pois eu nunca passei por esse erro.

[]´s
Se conseguir posta a resposta… :wink:

eh vc tem razao eh nessa linha …rs

ps2.executeUpdate();

nao sei mais o que fazer …
qqr coisa se tiver alguma ideia posta ai tb …
abraço…

eh vc tem razao eh nessa linha …rs

ps2.executeUpdate();

nao sei mais o que fazer …
qqr coisa se tiver alguma ideia posta ai tb …
abraço…

Colega,

Procurei no google sobre este erro:
Busca: java.sql.SQLException: General error at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:136)

E encontrei um site que o pessoal encontrou o mesmo erro, tem bastante dicas que podem ajudar…

http://forum.java.sun.com/thread.jspa?threadID=594878&messageID=3384574

puts, ta dificil pra caramba descobrir isso neh rsrs…
eu nao consegui nda la …
mas vlw …
se alguem souber… da um help aí rssr
abraço…