Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2007, 10:08
aeb_asturias
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
Sonrisa problemas con una consulta SQL desde java

Hola a todos.

Tengo el siguiente problema:

Necesito hacer desde java una consulta para obtener cuantos registros hay en una tabla cuyo campo "Nombre" contiene una determinada cadena.

En php me sale perfectamente. Pero hago la consulta en java y no lo consigo.

La consulta en php es la siguiente:

$consulta=mysql_db_query("prueba","select count(*) as 'ocurrencias' from tareas where Nombre like '%$nombreTarea%' ");

Los operadores % al principio y al final de la variable php $nombreTarea se utilizan para indicar que lo que busco son coincidencias con esa cadena almacenada en la variable $nombreTarea.

Ahora, el problema con java es que esos % no me los traga bien.

Inicialmente había puesto:

consulta=conexion.prepareStatement("select count(*) as 'ocurrencias' from tareas where Nombre like %?%");
consulta.setString(1,nombretarea);
resultadoConsulta=consulta.executeQuery();

Entonces me sale un error diciendo que la consulta está mal construida.

Se me ocurrió añadir los % al principio y al final de la variable java "nombretarea" y luego realizar la consulta:

nombretarea="%"+nombretarea+"%";
consulta=conexion.prepareStatement("select count(*) as 'ocurrencias' from tareas where Nombre like ?");
consulta.setString(1,nombretarea);
resultadoConsulta=consulta.executeQuery();

Pero entonces no me interpreta el caracter % como tiene que ser, es decir, que no sabe que se refiere al operador de coincidencias del lenguaje SQL y lo interpreta como un caracter mas del string almacenado en la variable nombretarea.

Nose si me he explicado muy bien jeje.

Resumiendo.....nose como se hace una consulta SQL desde java para obtener el número de registros de una determinada tabla que tienen en su campo "Nombre" un substring determinado.

Ejemplo:

Obtener el número de registros de la tabla tareas que en su campo Nombre aparece la cadena "ant".


Saludos.