Sql

4 respostas
ricardocomp

Olá pessoal,
eu não estou entendo direito porque o meu código abaixo
não está atualizando um usuário:

public void atualizarUsuarioSistema(UsuarioSistema usuario) throws LAFQADaoException {

        PreparedStatement ps = null;

        if (usuario == null)
            throw new LAFQADaoException("O valor passado não pode ser nulo");

        try {
            String sql = "UPDATE usuario_sistema SET password_2=?, tipo_usuario=? WHERE login=?";
            ps = conn.prepareStatement(sql);            
            ps.setString(1, usuario.getPassword());
            ps.setString(2, usuario.getTipoUsuario().toString());
            ps.setString(3, usuario.getLogin());
            ps.executeUpdate();
        }
        catch (Exception sqle) {
            throw new LAFQADaoException("Erro ao atualizar os dados do Usuario: " + sqle);
        }
}

Eu estou testando da seguinte forma:

usuario = usuarioDao.procurarUsuarioSistema("tecnico1");
            usuario.setLogin("cecilia");
            usuario.setPassword("tchuca");
            usuario.setTipoUsuario(TipoUsuario.TECNICO);
            usuarioDao.atualizarUsuarioSistema(usuario);

            System.out.println("Usuário Atualizado com Sucesso!");

Chega a exibir a mensagem mas no banco de dados nada é atualizado.

Será que alguém poderia me dar uma ajuda?

[]'s.

4 Respostas

ricardocomp

O meu método procurar está da seguinte forma:

public UsuarioSistema procurarUsuarioSistema(String login) throws LAFQADaoException {

        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            ps = conn.prepareStatement("SELECT * FROM usuario_sistema WHERE login=?");
            ps.setString(1, login);
            rs = ps.executeQuery();

            if (!rs.next()) {
                throw new Exception("Não foi encontrado nenhum usuário com o login: " + login);
            }

            String password = rs.getString(2);
            String tpUsuario =  rs.getString(3);
            TipoUsuario tipoUsuario = Enum.valueOf(TipoUsuario.class, tpUsuario.toUpperCase());
            return new UsuarioSistema(login, password, tipoUsuario);

        }
        catch (Exception sqle) {
            throw new LAFQADaoException(sqle);
        }
}

Será que alguém poderia me dar uma ajuda?

[]'s.

renamed

No seu método atualizarUsuarioSistema vc lança a exceção mas não a trata na outra parte do codigo que chama esse metodo (ao menos nao vi no seu fragmento de codigo), por isso que se um erro ocorrer ele continua a execução normal do método e escreve que foi atualizado msm se houver um erro!

ricardocomp

Olá Renato,
O código completo esta assim:

try {
            UsuarioSistema usuario = new UsuarioSistema();            
            UsuarioSistemaDao usuarioDao = new UsuarioSistemaDao();
            usuario = usuarioDao.procurarUsuarioSistema("tecnico1");
            usuario.setLogin("cecilia");
            usuario.setPassword("tchuca");
            usuario.setTipoUsuario(TipoUsuario.TECNICO);
            usuarioDao.atualizarUsuarioSistema(usuario);

            System.out.println("Usuário Atualizado com Sucesso!");
catch (LAFQADaoException ex) {
            System.out.println("Falha ao Atualizar o usuário!");
            ex.printStackTrace();
        }
    }

Porque caso ocorra algum problema era para exibir pelo menos a msg
de Falha.
Obrigado pela ajuda Renato, mas será que você ou alguém poderia me dar
uma ajuda?

[]'s.

A

Verifica como foi gravado no banco de dados antes do update, pode ser um espaço, caixa alta ou algum caracter especial.

Criado 4 de janeiro de 2010
Ultima resposta 4 de jan. de 2010
Respostas 4
Participantes 3