Parênteses em condição de sql não funciona

2 respostas
R

Olá
estou com a seguinte consulta dentro do meu código

String sql = "Select * from " + this.table + " where  ( login = ? OR nome = ? ) ";

            if (excetoSelecionado) {
                sql += " AND login != ? ";
            }

            sql += " limit 0,1 ";


            ps = con.prepareStatement(sql);


            ps.setString(1, usuario.getLogin());
            ps.setString(2, usuario.getNome());

            if (excetoSelecionado) {
                ps.setString(3, usuario.getLogin());
            }

            System.out.println(ps.toString());

O valor que ela retorna está correto e validado, testei varias vezes, como estou sem prática alguma no últimos 5 anos na linguagem, talvez seja alguma peculiaridade do PreparedStatement, alguèm poderia me ajudar com isto?

O erro que retorna é este
GRAVE: 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 login=‘login1’’ at line 1

2 Respostas

jamirdeajr
Não deve ajudar em nada, mas fiz o teste aqui pra ver se reproduzia o erro:
String sql = "Select * from " + this.table + " where  ( login = ? OR nome = ? ) ";
sql += " limit 0,1 ";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setString(1, "teste");
ps.setString(2, "teste");

System.out.println(ps.toString());

ResultSet rs = ps.executeQuery();
if (rs.next()) {
    System.out.println(rs.getString("login"));
}
Resultado no console:
com.mysql.jdbc.JDBC4PreparedStatement@42197bb7: Select * from usuario where  ( login = 'teste' OR nome = 'teste' )  limit 0,1 
teste

Ou seja não deu o mesmo erro...

Talvez verificar a versão do driver JDBC, no teste utilizei esta: 'mysql-connector-java-5.1.13-bin.jar'
E também se não tem alguma 'sujeira' no 'this.table'...

R

Troquei o driver e funcionou, fiz download direto do site do mysql para ter certeza.
o que eu estava usando anteriormente era o que estava na instalação do netbeans full.

Criado 28 de março de 2011
Ultima resposta 29 de mar. de 2011
Respostas 2
Participantes 2