Botao alterar

7 respostas
ken420

uso o netbeans 6.1 criei um formulario e tem um botao para alterar o registro no meu banco de dados mas esta dando esse log

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' where Codigo = 1' at line 1
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

e o código esta assim!

private void botao_alterarActionPerformed(java.awt.event.ActionEvent evt) {                                              
 try
 {
     String sql ="UPDATE cliente SET Nome ='"+tf_Nome.getText()+"',"+
              "Email = '" +tf_Email.getText()+"',"+
              "Obs = '" +tf_Obs.getText()+"',"+
              "N = '" +tf_N.getText()+"',"+
              "Ende = '" +tf_Ende.getText()+"',"+
              "DdN = '" +tf_DdN.getText()+"',"+
              "Foto = '" +tf_Foto.getText()+"',"+
              "FoneC = '" +tf_FoneC.getText()+"',"+            
              "Comp = '" +tf_Comp.getText()+"',"+ 
              "Rg = '" +tf_Rg.getText()+"',"+ 
              "Cpf = '" +tf_Cpf.getText()+"',"+ 
              "Cep = '" +tf_Cep.getText()+"',"+
              "Sexo = '" +sexo+"',"+ 
             "' where Codigo = "+tf_Codigo.getText();
     con_cliente.statement.executeUpdate(sql);
     JOptionPane.showMessageDialog(null,"Alteracao realizada com sucesso!");
     
     //atualiza o ResultSet
     con_cliente.executeSQL("Select * from cliente ");
     atualiza_combo_box_cliente();
     con_cliente.resultset.first(); //posiciona no primeiro registro
     mostra_dados();

7 Respostas

finotti

retire a vírgula antes da cláusula ‘where’

"Sexo = '" +sexo+ "' where Codigo = "+tf_Codigo.getText();

rso1988

Amigo, realmente tem um erro na sintaxe da última linha do camando SQL, ela deve ficar assim:

"where Codigo = '"+tf_Codigo.getText()+"'";

flw!

rso1988

Complementando a minha explicação… Deve-se fazer o que o nosso amigo finotti disse tb…

ken420

dechei o codigo da maneira que vcs falaro mas o mesmo erro continua

"Sexo = '" +sexo+ 
             "where Codigo = '"+tf_Codigo.getText()+"'";
finotti

o erro está na sua query.
use um “print” na sua query sql antes de executá-la pra vermos o que está acontecendo.

tente executar essa query “printada” diretamente, sem usar o programa java.

ken420
init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\kenshin\Meus documentos\NetBeansProjects\Estoque\build\classes
Note: C:\Documents and Settings\kenshin\Meus documentos\NetBeansProjects\Estoque\src\cadastros\clientes2.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
compile:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'' at line 1
debug:
CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)
ken420

no meu banco de dados Codigo armazena int, é int mesmo neh pq codigo sao apenas numero nao seria varchar neh?

Criado 27 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 7
Participantes 3