2012-09-30 12 views
5

Estoy creando un formulario de búsqueda para mi aplicación.
En él, el usuario selecciona los campos que se deben utilizar en el filtrado de datos.
los campos numéricos son variables, así que no sé cuántos ? deberían estar en la cláusula where de la consulta SQL.
¿Cómo puedo usar preparedStatement con una cantidad variable de condiciones en where clause?trabajando con una cantidad variable de parámetros en un estado preparado

Gracias

Respuesta

3

PrepardStatements no son compatibles con un número variable de condiciones. Lo que hacen algunos frameworks es almacenar en caché cada estado preparado en un mapa donde la clave es la consulta.

Así que cada vez que desee ejecutar una consulta, debe construir la cadena para crear el estado preparado, verificar si lo tiene en el mapa (y reutilizarlo) o crear uno nuevo, y agregarlo al mapa .

4

si desea agregar un número variable de condiciones en where cláususe use StringBuilder (StringBuffer si su env multiproceso) yy tiempo de ejecución según sus condiciones concate/append a su cadena.

como

StringBuilder query = new StringBuilder("Select id, name from Student "); 


if(args >0) 
{ 
    query.append(" where "); //and add more args. 

y más tarde crear declaración preparada con esta consulta mediante la conversión a cadena

PrepareStatement(query.toString()); 
+0

Cuidado: Este código es susceptible a la inyección de SQL. – rook

Cuestiones relacionadas