Estou agora entrando na Linguagem Java por isso desculpas antecipadas por qualquer bobagerm falada(digitada)…
Criei este codigo… que pega os valores de uma tabela e adicionada(insere) em outra tabela de um mesmo Banco de Dados
para efeito de estudos…
publicConnectionconF;publicStatementstmF,inputFsetor;publicResultSetrsAsetor,rsAbens,rsFsetor,rsFbens;Class.forName("org.firebirdsql.jdbc.FBDriver");conF=DriverManager.getConnection(urlF,usuarioF,senhaF);stmF=conF.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);try{rsAsetor=stmF.executeQuery("SELECT * FROM DBF_SETOR ORDER BY COD_UNID");inputFsetor=conF.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);while(rsAsetor.next()){Stringval1=rsAsetor.getString("COD_UNID");Stringval2=rsAsetor.getString("DES_UNID");Stringsql="INSERT INTO SETORES (CODIGO, DESCRICAO) VALUES ('0"+val1+"','"+val2.trim()+"')";inputFsetor.executeUpdate(sql);}}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Dados não Localizados!!!"+ex);}
So que ele executa o WHILW uma unica vez e dá o seguinte erro:
Erro…org.firebirdsql.jdbc.FBSQLException: The result set is closed
para cada iteração do While imprime os resultados para ver se estão iguais ao do banco
ao invés de executeUpdate, se não me engano tem o ExecuteSQL tenta ele
R
rodrigojava3d
A vantagem é que com ExecuteSQL acho que pode usar query montada, ou seja, escrever sua própria query quase igual você faria no SQL.
lmvichiatto
CaianaPB
Verifique o seu WHILE, no caso ele vai até que o ponteiro passe para o próximo registro, acho que seu desejo é que ele execute até o final da lista “rsAsetor” (rsAsetor.size() - ou o que possui a quantidade de registros), no final do comando coloque o “next” para que o ponteiro aponte o próximo registro .
Uma dica quando utilizar consultas no código coloque os nomes dos campos que irá utilizar de fato, isso melhora a resposta da tua consulta.
att
Luiz Marcelo
C
CaianaPB
Amigos…
tente as dicas que vcs indicaram e nada funcionou…
troque ate o codigo para este aqui… e mesmo assim aconteceu o erro abaixo…
do{Stringval1=rsAsetor.getString("COD_UNID");Stringval2=rsAsetor.getString("DES_UNID");Stringsql="INSERT INTO SETORES (CODIGO, DESCRICAO) VALUES ('0"+val1+"','"+val2.trim()+"')";rsAsetor.next();inputFsetor.executeUpdate(sql);rtConvUA.setText(String.valueOf(qdaLin));qdaLin++;}while(rsAsetor.isLast());Exceptioninthread"AWT-EventQueue-0"java.lang.NullPointerExceptionatorg.firebirdsql.jdbc.AbstractResultSet.isLast(AbstractResultSet.java:1199)atPrincipal.jButton1ActionPerformed(Principal.java:304)atPrincipal.access$100(Principal.java:22)atPrincipal$2.actionPerformed(Principal.java:177)atjavax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)atjavax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)atjavax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)atjavax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)atjavax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)atjava.awt.Component.processMouseEvent(Component.java:6267)atjavax.swing.JComponent.processMouseEvent(JComponent.java:3267)atjava.awt.Component.processEvent(Component.java:6032)atjava.awt.Container.processEvent(Container.java:2041)atjava.awt.Component.dispatchEventImpl(Component.java:4630)atjava.awt.Container.dispatchEventImpl(Container.java:2099)atjava.awt.Component.dispatchEvent(Component.java:4460)atjava.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)atjava.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)atjava.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)atjava.awt.Container.dispatchEventImpl(Container.java:2085)atjava.awt.Window.dispatchEventImpl(Window.java:2478)atjava.awt.Component.dispatchEvent(Component.java:4460)atjava.awt.EventQueue.dispatchEvent(EventQueue.java:599)atjava.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)atjava.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)atjava.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)atjava.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)atjava.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)atjava.awt.EventDispatchThread.run(EventDispatchThread.java:122)
espero que tenha alguma solução… quero apenas percorrer uma tabela armazenar os valores e gravar em outra…
Grato…