[Resolvido] Update no banco de dados MySQL

Boa noite a todos!!!
Criei uma tabela chamada Alunos, onde devo, inserir, buscar, deletar e atualizar. O problema é que eu não estou conseguindo fazer o update. Alguém poderia me ajudar?
A tabela tem os seguintes campos: idAluno(INT(10)), endereco(VARCHAR(45)), cep(VARCHAR(10)), cidade(VARCHAR(45)), estado(VARCHAR(2)), pais(VARCHAR(45)), nmAluno(VARCHAR(45)).
Criei duas classes, Alunos, TestaAlunos, dentro da classe Alunos, eu fiz um switch para listar as opções de inserir, buscar, deletar e atualizar.
Abaixo segui o case, referente a classe alunos.


case 4:    
             JOptionPane.showMessageDialog(null,"Você Escolheu Atualizar Dados!","Modulo Atualizar",JOptionPane.QUESTION_MESSAGE);  
             String idAluno1 = JOptionPane.showInputDialog(null,"Digite o Código que Você quer Atualizar: ");  
             int codAluno1 = Integer.parseInt(idAluno1);  
             Banco.deletar(codAluno1);  
               
             JOptionPane.showMessageDialog(null,"Dados atualizados com Sucesso!","Atualizando...",JOptionPane.ERROR_MESSAGE);
             break;  
               
   
         default:  
             break;  
         }  

E na classe TestaAlunos, o seguinte método, para realizar o UPDATE:


 public boolean atualizar(String SQL, String codAluno) {  
		 SQL = "UPDATE alunos SET codAluno='"+123459+"', WHERE idAluno = " + codAluno;
         int linhas = 0;  
         try  
         {  
             System.out.println("Realizando atualização de dados....");  
             System.out.println("Instrucao SQL :: "+ SQL);  
               
             linhas = stmt.executeUpdate(SQL);  
             if(linhas > 0) return true;  
             else return false;  
         }  
           
         catch(SQLException e)  
         {  
             JOptionPane.showMessageDialog(null, "Erro!!! \n Ao tentar atualizar registros!! \n SQL :: " + e,"Erro Conexão BD",JOptionPane.INFORMATION_MESSAGE);  
             return false;  
         }  
           
           
     }  

Alguém poderia me ajudar?

Vlw!

Oi,

Qual é o erro?

Imprima o StackTrace…

    catch(SQLException erro) {    
        JOptionPane.showMessageDialog(null,"Erro,ao listar");    
       erro.printStackTrace(); //isso vai imprimir a pilha de exceções no console, indicando, dentre outras informacoes, a linha que deu problema.    
    }   

Não aparece mensagem de erro, mas ao invés de executar o código atualizar, executa o código do delete. Abaixo o código delete.

public boolean deletar(int codAluno) {  
           
     String query = "DELETE FROM alunos WHERE idAluno = " + codAluno;  
       
     int linhas = 0;  
         try  
         {  
             System.out.println("Deletando dados....");  
             System.out.println("Instrucao SQL :: "+ query);  
           
                 linhas = stmt.executeUpdate(query);  
                     if(linhas > 0) return true;  
                         else return false;  
         }  
       
         catch(SQLException e)  
         {  
             JOptionPane.showMessageDialog(null, "Erro!!! \n Ao tentar deletar registros!! \n SQL :: " + e,"Erro Conexão BD",JOptionPane.INFORMATION_MESSAGE);  
             return false;  
         }  
       
     }  

Qual foi o meu erro?

Então, é dificil saber assim, mas acho que deve estar nesse seu switch case

    case 4:      
                 JOptionPane.showMessageDialog(null,"Você Escolheu Atualizar Dados!","Modulo Atualizar",JOptionPane.QUESTION_MESSAGE);    
                 String idAluno1 = JOptionPane.showInputDialog(null,"Digite o Código que Você quer Atualizar: ");    
                 int codAluno1 = Integer.parseInt(idAluno1);    
                 Banco.deletar(codAluno1); // acho que é aqui   
                     
                 JOptionPane.showMessageDialog(null,"Dados atualizados com Sucesso!","Atualizando...",JOptionPane.ERROR_MESSAGE);  
                 break;    
                     
         
             default:    
                 break;    
             } 

Se eu alterar desta maneira:


case 4:        
              JOptionPane.showMessageDialog(null,"Você Escolheu Atualizar Dados!","Modulo Atualizar",JOptionPane.QUESTION_MESSAGE);      
              String idAluno1 = JOptionPane.showInputDialog(null,"Digite o Código que Você quer Atualizar: ");      
              int codAluno1 = Integer.parseInt(idAluno1);      
              Banco.atualizar(codAluno1); // dá erro....informa que é necessário criar o método atualizar do tipo int na Classe TestaAlunos  
                    
              JOptionPane.showMessageDialog(null,"Dados atualizados com Sucesso!","Atualizando...",JOptionPane.ERROR_MESSAGE);    
              break;      

Mas o método já esta criado:


 public boolean atualizar(String SQL, String codAluno) {  
    	
		 SQL = "UPDATE alunos SET codAluno='"+123459+"', WHERE idAluno = " + codAluno;
         int linhas = 0;  
         try  
         {  
             System.out.println("Realizando atualização de dados....");  
             System.out.println("Instrucao SQL :: "+ SQL);  
               
             linhas = stmt.executeUpdate(SQL);  
             if(linhas > 0) return true;  
             else return false;  
         }  
           
          catch(SQLException erro) {      
        	      JOptionPane.showMessageDialog(null,"Erro,ao listar");      
        	     erro.printStackTrace(); //isso vai imprimir a pilha de exceções no console, indicando, dentre outras informacoes, a linha que deu problema.      
        	  }
		return false;    
     }

Você declarou codAluno como String no atualizar…

Aqui tem um tutorial muito bom, da uma olhada…http://mballem.wordpress.com/2011/02/21/utilizando-swing-com-banco-de-dados/

O erro abaixo ocorre devido o método atualizar necessitar de dois parâmetros e você está passando apenas um, então faça um teste tirando o parâmetro SQL do método:

Ficando assim:

[code]public boolean atualizar(String codAluno) {

 String SQL = "UPDATE alunos SET codAluno='"+123459+"', WHERE idAluno = " + codAluno;  
    int linhas = 0;    
    try    
    {    
        System.out.println("Realizando atualização de dados....");    
        System.out.println("Instrucao SQL :: "+ SQL);    
            
        linhas = stmt.executeUpdate(SQL);    
        if(linhas > 0) return true;    
        else return false;    
    }    
        
     catch(SQLException erro) {        
          JOptionPane.showMessageDialog(null,"Erro,ao listar");        
         erro.printStackTrace(); //isso vai imprimir a pilha de exceções no console, indicando, dentre outras informacoes, a linha que deu problema.        
      }  
return false;      
} [/code]

Movido para o fórum de Persistência. Por favor, leia atentamente a descrição dos fóruns antes de postar.
Além disso, evite postar títulos dos tópicos usando SOMENTE LETRAS MAIÚSCULAS.

Boa noite!

Eu fiz o teste conforme o JMARQ falou, mas continua apresentando erro. Veja as alterações.
Classe TestaAlunos

public boolean atualizar(int codAluno1) {      
    	            
    	         	String SQL = "UPDATE alunos SET codAluno='"+123459+"', WHERE idAluno = " + codAluno1;    
    	            int linhas = 0;      
    	            try      
    	            {      
    	                System.out.println("Realizando atualização de dados....");      
    	                System.out.println("Instrucao SQL :: "+ SQL);      
    	                      
    	               linhas = stmt.executeUpdate(SQL);      
    	               if(linhas > 0) return true;      
    	               else return false;      
    	           }      
    	                 
    	            catch(SQLException erro) {          
    	                 JOptionPane.showMessageDialog(null,"Erro,ao listar");          
    	                erro.printStackTrace(); //isso vai imprimir a pilha de exceções no console, indicando, dentre outras informacoes, a linha que deu problema.          
    	             }    
    	            return false;        
    	       }   

E a alteração feita na classe Alunos:

case 4:    
             JOptionPane.showMessageDialog(null,"Você Escolheu Atualizar Dados!","Modulo Atualizar",JOptionPane.QUESTION_MESSAGE);  
             String idAluno1 = JOptionPane.showInputDialog(null,"Digite o ID que você quer Atualizar: ");  
             int codAluno1 = Integer.parseInt(idAluno1);  
             Banco.atualizar(codAluno1);  
               
             JOptionPane.showMessageDialog(null,"Dados atualizados com Sucesso!","Atualizando...",JOptionPane.ERROR_MESSAGE);
             break;  
               

Abaixo o erro apresentado:

Realizando atualização de dados…
Instrucao SQL :: UPDATE alunos SET codAluno=‘123459’, WHERE idAluno = 1253
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 idAluno = 1253’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1698)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1617)
at aula10.TestaAlunos.atualizar(TestaAlunos.java:138)
at aula10.Alunos.main(Alunos.java:64)

Acho que vc já percebeu que tem um erro de sintaxe na sua condição SQL …


 String SQL = "UPDATE alunos SET codAluno='"+123459+"', WHERE idAluno = " + codAluno1;      

Não tem aquela vírgula antes do WHERE:

Se o codAluno for um inteiro, não terá as aspas simples também.

E ae galera!
Primeiramente queria agradecer a ajuda de vcs, achei o erro e fiz a correção. Abaixo o código alterado.

public boolean atualizar(int codAluno1) {      
    	            
    	         	String SQL = "UPDATE alunos SET idAluno='"+123459+"' WHERE idAluno = " + codAluno1;  // SET codAluno troquei por SET idAluno  
    	            int linhas = 0;      
    	            try      
    	            {      
    	                System.out.println("Realizando atualização de dados....");      
    	                System.out.println("Instrucao SQL :: "+ SQL);      
    	                      
    	               linhas = stmt.executeUpdate(SQL);      
    	               if(linhas > 0) return true;      
    	               else return false;      
    	           }      
    	                 
    	            catch(SQLException erro) {          
    	                 JOptionPane.showMessageDialog(null,"Erro,ao listar");          
    	                erro.printStackTrace(); //isso vai imprimir a pilha de exceções no console, indicando, dentre outras informacoes, a linha que deu problema.          
    	             }    
    	            return false;        
    	       }  

OPS: Peço perdão, eu havia deixado a página aberta aqui e esqueci de atualizar para ver o que se seguiu no tópico e postei sem saber das novas postagens.

Sorry!