2011-11-26 31 views

Respuesta

6

Tendría que usar varias declaraciones preparadas o simplemente crear una declaración sobre la marcha, verificando qué parámetros tiene.

De esta manera:

String query = "SELECT * FROM table WHERE id=?"; 
if(nameParameter != null) { 
    query += " AND name=?"; //don't never ever directly add the value here 
} 
... 

actualización/Advertencia: No añadir directamente los valores de los parámetros de la cadena de consulta pero el uso de PreparedStatement y similares en su lugar. Como se muestra arriba, la cadena de consulta solo debe contener marcadores de posición para los valores (por ejemplo, ?) para evitar ataques de inyección SQL.

Lo que quiero decir es, no hago las siguientes:

if(nameParameter != null) { 
    //NEVER EVER, REALLY I MEAN IT, DON'T DO THIS 
    query += " AND name='" + nameParameter + "'"; 
} 
+0

TKS ... Es la forma en que he utilizado, parece que el "más limpia" manera –

+0

Sé que hay marcos cabo allí para la generación de consultas dinámicas, pero esta parece ser la mejor solución para muchos casos. +1 –

+0

pero este enfoque es propenso a los ataques de inyección sql. – aishu

Cuestiones relacionadas