JSP y el operador LIKE de SQL

Fran-Ki
26 de Diciembre del 2003
Hola a todos!

Estoy intentando hacer una consulta parecida esta:

PreparedStatement consulta;
consulta = con.prepareStatement("SELECT p.* FROM peliculas as p WHERE p.titulo LIKE '%?%';");
consulta.setString(1,titul);
rs = consulta.executeQuery();

El problema viene en el LIKE '%?%' , ya que ? es el parámetro que recojo desde el formulario, pero a su vez el SQL lo interpreta como un carácter cualquiera.
Creo que el problema está ahí, aunque no estoy seguro. ¿Como lo puedo resolver?
A ver si alguien me pude echar una mano. Gracias.

Maria
26 de Diciembre del 2003
También lo puedes hacer así. Espero haberte ayudado.

interrogacion="?";
interrogacion="%"+interrogacion+"%";

consulta = con.prepareStatement("SELECT p.* FROM peliculas as p WHERE p.titulo LIKE interrogacion;");
consulta.setString(1,titul);
rs = consulta.executeQuery();

isct
26 de Diciembre del 2003
Yo lo tengo hecho así y me funciona bien;
consulta = con.prepareStatement("SELECT p.* FROM peliculas as p WHERE p.titulo LIKE ?");
titul = "%" + titul.trim() + "%";
consulta.setString(1,titul);

Espero que te sea de ayuda, un saludo,

isabel

daavich
26 de Diciembre del 2003
Te recomiendo que hagas lo que dice la otra respuesta ya que al usar los parámetros se supone que se incorpora a la select lo que sea necesario en función del tipo de parámetro que le insertas, en el caso de una cadena de texto CODE=? se podría sustituir por CODE='parametro' pero al poner el parámetro ya dentro de unas comillas simples el JDBC te dará el fallo porque estarías poniendo algo como CODE=''parametro'' (con dos comillas simples en cada parte)