Uma duvida, sou iniciante e não estou conseguindo solucionar o meu crud quando se diz respeito a atualizar. ele apresenta o seguinte erro?

1 resposta
A

Erro apresentado:

com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxErrorException: yu have an erro in your sql syntax; check
the manual that corresponds to your mysql server version for the right syntax to use near “1111-1111”… at line 1.

Codigo:

private void alterar(){
           String sql = "update tbusuario set usuario=?, fone?, login?, senha=?, perfil = ? where iduser=?" ;
             try {
            pst = conexao.prepareStatement(sql);
            pst.setString(1,txtUsoNome.getText());
            pst.setString(2,txtFone.getText());
            pst.setString(3,txtUsuLogin.getText());
            pst.setString(4,txtUsuSenha.getText());
            pst.setString(5,cboUsoPerfil.getSelectedItem().toString());   
            pst.setString(6,txtUsuId.getText());

             // validação dos campos obrigatorios
           if ((txtUsuId.getText().isEmpty())||(txtUsoNome.getText().isEmpty()) ||(txtUsuLogin.getText().isEmpty())||(txtUsuId.getText().isEmpty())){
               JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatorios");
           }else{
                   
            // pst.executeUpdate(); , a linha abaixo atualiza/inseir a tabela usuario com os dados do formulario
           // a estrutura abaixo é usada para confirmar alteraçao dos dados na tabela
           int adicionado = pst.executeUpdate();
           
           if(adicionado > 0){
                JOptionPane.showMessageDialog(null, "usuario adicionado com sucesso");
                txtUsuId.setText(null);
                txtUsoNome.setText(null);
                txtFone.setText(null);
                txtUsuLogin.setText(null);
                txtUsuSenha.setText(null);
                cboUsoPerfil.setSelectedItem(null);  
           }
           

           }
            
            
                    
        } catch (Exception e) {
         JOptionPane.showMessageDialog(null, e);
        
        }
        
    
               
       
         }

1 Resposta

L

Na variável sql falta sinal de = nos campos …

fone?, login?

Outra coisa, se essa linha for um JPasswordField…

pst.setString(4,txtUsuSenha.getText());

Melhor trocar pelo método getPassword…

pst.setString(4,String.valueOf(txtUsuSenha.getPassword()));

Quanto ao if de validação, você também pode colocá-lo no começo do método e fazer assim, sem necessidade de else… veja se melhora a leitura do código…

if ((txtUsuId.getText().isEmpty())...){
    JOptionPane....
    return; //o pulo do gato aqui...
}

// o try-catch completo vem abaixo sem o else...

Onde marquei o “pulo do gato” na linha to return, é um “macete” no java, em métodos que retornam void, você pode retornar vazio evitando ir para as linhas seguintes…

Criado 5 de maio de 2017
Ultima resposta 6 de mai. de 2017
Respostas 1
Participantes 2