Erro BD

7 respostas
D

Olá pessoal!

Estou com um problema ao clicar em um botão Atualizar… o código que trata o evento é o seguinte:

String SQL = "UPDATE Contatos SET "+ "Cod_Contato='"+contCod.getText()+"',"+ "Nome_Contato='"+contNome.getText()+"',"+ "Email_Contato='"+contEmail.getText()+"',"+ "Aniv_Contato='"+contAniv.getText()+"',"+ "Idade_Contato='"+contIdade.getText()+"',"+ "Tel1_Contato='"+contTel1.getText()+"',"+ "Tel2_Contato='"+contTel2.getText()+"',"+ "Obs_Contato='"+contObs.getText()+"' "+ "WHERE Cod_Contato = '"+contCod.getText()+"'"; int r = 0; try { r = MeuState.executeUpdate(SQL); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (r==1) JOptionPane.showMessageDialog(null,"Atualização realizada com sucesso"); else JOptionPane.showMessageDialog(null,"Esse Contato ainda não está cadastrado\n Pressione Inserir");

[color=red]java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)

at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)

at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)

at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)

at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)

at visao.ContatosVisao$ListenerContatos.actionPerformed(ContatosVisao.java:396)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

[/color]

Alguém sabe o que está ocorrendo??? :frowning:
Obrigada,
Dina

7 Respostas

D

Ok…!

Obrigada!
:slight_smile:

_Renatu

uma dica:

para evitar TANTA concatenaçao de Strings, aprenda a substituir o Statement por PreparedStatement, seu código fica mais limpo, mais fácil de entender e de detectar erros bobos.

Fernandojdk

Olá…

Tente usar um PreparedStatement:

String SQL = "UPDATE Contatos SET Cod_Contato = ?, Nome_Contato = ?, Email_Contato = ?, Aniv_Contato  = 
?, Idade_Contato = ?, Tel1_Contato = ?, Tel2_Contato = ?, Obs_Contato = ? WHERE Ficodigo = ?";  

PreparedStatement pstm = con.prepareStatement(SQL);

int r = 0;  
try {  
     pstm.setString(1, contCod.getText());
     pstm.setString(2, contNome.getText());
     pstm.setString(3, contEmail.getText());
     pstm.setString(4, contAniv.getText());
     pstm.setString(5, contIdade.getText());
     pstm.setString(6, contTel1.getText());
     pstm.setString(7, contTel2.getText());
     pstm.setString(8, contObs.getText());
     pstm.setString(9, contCod.getText());
     r = pstm.execute();  
} catch (SQLException e1) {  
     // TODO Auto-generated catch block  
     e1.printStackTrace();  
}  
     if (r==1) {
          JOptionPane.showMessageDialog(null,"Atualização realizada com sucesso");  
     } else  {
          JOptionPane.showMessageDialog(null,"Esse Contato ainda não está cadastrado\n Pressione Inserir");
     }

Não testei, mas se num me engano deve funcionar…

Abraços…

D

:smiley:

Deu certo!!

:smiley:

Mto mto obrigada!!

Fernandojdk

Deu certo!!

:smiley:

Mto mto obrigada!![/quote]

Não tem de que… :slight_smile:

T

… obrigado! =)

JMan

Sei

Pegue a sua query e execute ele conta o BD via uma ferramenta qualquer que pode ficar mais fácil de vc encontrar o problema.

Criado 21 de novembro de 2007
Ultima resposta 21 de nov. de 2007
Respostas 7
Participantes 5