Problema Com Update Em Banco MySQL[RESOLVIDO]

6 respostas
sidney.tavares

Bom dia a todos, estou com um problema em meu codigo na hora de fazer update, tenho uma classe UsuarioDAO, com o metodo para fazer este update, e uma classe GenericDAO, que tem o metodo que deveria realizar este comando, abaixo os trechos com problemas:

Metodo da classe UsuarioDAO

public void atualizarUsuario(Usuario usuario) throws SQLException{
        String query = "UPDATE petshop.usuario SET Nome = '?', Login = '?', Senha = '?', WHERE Id = '?'";
        executeCommand(query, usuario.getNome(),usuario.getLogin(),usuario.getSenha(),usuario.getId());
    }

Metodo da classe GenericDAO

public Object executeCommand(String query, Object... params )throws SQLException{
        PreparedStatement ps = getStatement(query);
        for (int i = 0; i < params.length; i++) {
            ps.setObject(i + 1, params[i]);
        }
         return ps.executeUpdate();     
    }

Estou executando teste e ao tentar atualizar a tabela me retorna a seguinte excecao:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

Primeiro não usei aspas simples nas interrogações, mas neste caso dava erro de sintaxe, quando coloco as aspas simples lança a exceção que mencionei, os outros métodos, inserir, remover e pegar os usuários do banco funcionam perfeitamente, agradeço desde já qualquer ajuda. Abraco.

6 Respostas

caarlos0

Não pode ter aspas em volta do “?”.

jeffev

Talvez esses 3 links lhe ajudem.



http://www.coderanch.com/t/307234/JDBC/databases/java-sql-SQLException-Parameter-index

Em um deles diz que tem que tirar a aspa simples, no outro diz que o problema é por ter um PreparedStatement sendo usado por mais de 1 query.

jeffev

Também acho isso!

A

De fato seu problema está com as aspas simples. Tem que retirá-las. E deu erro de sintaxe por causa da vírgula que está entre o último parâmetro e a palavra chave WHERE. O comando correto seria isto:

String query = "UPDATE petshop.usuario SET Nome = ?, Login = ?, Senha = ? WHERE Id = ?";
sidney.tavares

Obrigado a todos pela ajuda, Ademilton, sua resposta resolveu meu problema, obrigado.

jeffev

Perfeito!
Só coloca como resolvido no assunto do tópico.

Criado 23 de agosto de 2012
Ultima resposta 23 de ago. de 2012
Respostas 6
Participantes 4