Aplicação não alterar - STATUS: NÃO SOLUCIONADO!

1 resposta
101574

Oie,

Galera, vou dar uma explicação geral.
E o seguinte, eu estou montando uma tela de cadastro, e consigo cadastrar os dados. Só que não consigo alterar.
Eu tenho um tela que tem o campo CampoNome.
Nisso eu criei uma classe auxiliar, e eu tenho os métodos set e get nome.
Eu criei vários métodos, conectar, inserir... e alterar.
O método inserir funciona, agora o alterar eu não consigo.
O meu método alterar estar assim:

//Alterar cadastro
 public void alterar(){

      Statement stmt = null;
            // query que será executada
        String sql ="UPDATE OI SET NOME = '"+this.getNome()+"', ENDERECO = '"
                +this.getEndereco()+"', EMAIL = '"+this.getEmail()+"', FONE = '"
                +this.getFone()+"',ESTADO = '"+this.getEstado()+"', SEXO ='"
                +this.getSexo()+"',BIBLIOGRAFIA ='"+this.getBibliografia()+"' " +
                "WHERE NOME ='"+this.getNome()+"'";
        
        System.out.println(this.getNome());

                System.out.println(sql);
 try {
              stmt = this.conn.createStatement();
            stmt.executeUpdate(sql);
             JOptionPane.showMessageDialog(null,"Cadastro Alterado com sucesso!");
        } catch(SQLException e){
            JOptionPane.showMessageDialog(null,"Não foi possível efetuar Alterar usuário! "+
                    "Erro: "+ e.getMessage());
}
 }

Eu queria a principio, colocar o nome que queria alterar, e apertar alterar, e tudo o que estive nos demais campos fossem alterados.
Se você tiverem um exemplo de como faz isso, também serve.
Eu entendo muita coisa.
Mas isso, eu não estou conseguindo.
Tem mais coisas, mas se eu conseguir resolver isso. Creio que o resto eu consigo também.
Valeu por tudo galera.

Wesley.

1 Resposta

willricardo

Cara segue umas modificações!!

public void alterar(){  
  
      	Statement stmt = null;  
            // query que será executada  
        	String sql = "update oi set nome = ?, endereco = ?, email = ?, fone = ?, estado = ?, sexo = ?, 		  		  bibliografia = ? where nome = ?";
          
        System.out.println(this.getNome());  
  

	try {  
              stmt = this.conn.prepareStatement(sql);
	      stmt.setString(1, this.getNome());
	      stmt.setString(2, this.getEndereco());
	      stmt.setString(3, this.getEmail());
	      stmt.setString(4, this.getFone());
	      stmt.setString(5, this.getEstado());
	      stmt.setString(6, this.getSexo());
	      stmt.setString(7, this.getBibliografia());
	      stmt.setString(8, this.getNome());
              System.out.println(sql);  
              stmt.execute();
	      stmt.close();
             JOptionPane.showMessageDialog(null,"Cadastro Alterado com sucesso!");  
        } catch(SQLException e){  
            JOptionPane.showMessageDialog(null,"Não foi possível efetuar Alterar usuário! "+  
                    "Erro: "+ e.getMessage());  
	}  
}

Bota para funfar e vê se agora rola!!

Cara não usa esta String SQL como você esta fazendo, pois pode ocorrer sql injection!!

Vamos supor que se meu nome fosse willian’s e no banco estivesse willians.

Ai vou usar seu sistema para fazer update.
Então seto meu nome correto willian’s…pronto tah feito a merda!!

Sua String estara com uma apas simples no meio e o db entende como caracter especial!!!

Você ira tomar um lindo erro sem saber o motivo!!

Espero ter ajudado!!

Abraços!!

Criado 5 de novembro de 2009
Ultima resposta 5 de nov. de 2009
Respostas 1
Participantes 2