Duvida sobre consulta usando PreparedStatement

Ola amigos do GUJ estou com uma dúvida em uma consulta sql, estou usando o myql, minha consulta encontra-se no método do meu DaoCidade, esta dando uma excessao que afirma para conferir a sintaxe sql, mas quando eu faço “SELECT * FROM cidade WHERE nome LIKE ‘?%’”, para de da essa excessão, porém lança uma excessão afirmando Parameter index out of range (1 > number of parameters, which is 0). Alguem poderia me dar uma dica sobre isso, deve ser algum pequeno erro, só preciso de uma pequena ajuda, desde já obrigado.
public List pesquisar(String rgx) throws SQLException{
String select=“SELECT * FROM cidade”
+ “WHERE nome LIKE ?”+’%’;
ResultSet rs=executaConsulta(select,rgx);
List cidades= new ArrayList();
while (rs.next()){
Cidade cidade=new Cidade();
cidade.setCodCidade(rs.getInt(“codigo”));
cidade.setNome(rs.getString(“nome”));
cidade.setUf(rs.getString(“uf”));
cidades.add(cidade);
}

  return cidades;

}

Meu metodo executaConsulta que está no meu DaoGenerico é o seguinte:
public ResultSet executaConsulta(String selectSql,Object… params) throws SQLException{
PreparedStatement ps=getConexao().prepareStatement(selectSql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs;
for( int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
rs= ps.executeQuery();
ps.close();

   return rs;

}

Amigo da proxima vez coloca na tag code pq assim fica muito dificil de quem vai ajudar ler seu codigo.

Eu vou dar só a dica pra voce resolver esse problema: Ao chamar o setObject() o metodo vai fazer instanceof e verificar o tipo passado. Se for String ele vai colocar as aspas simples no seu parametro. Por isso nenhuma das suas duas consultas esta com sintaxe correta.

A primeira o resultado seria:

SELECT * FROM cidade WHERE nome LIKE (aspa simples)?(aspa simples)%;

o segundo seria:

SELECT * FROM cidade WHERE nome LIKE (aspa simples)(aspa simples)?(aspa simples)%(aspa simples)

Tem varias formas de resolver isso. Uma delas seria passar seu curinga(%) apenas na passagem do parametro.

Posta o erro mostrado…

Obrigado, eu tinha pensando que poderia ser mais ou menos isso, eu consegui resolver passando % na chamada do método. Falta de atenção minha. :slight_smile: . Era o que o Carlos tinha afirmado.