2012-09-30 11 views
5

Sto creando un modulo di ricerca per la mia applicazione.
In esso l'utente seleziona i campi che devono essere utilizzati nel filtraggio dei dati.
i campi numerici sono variabili, quindi non so quanti ? devono trovarsi nella clausola where della query SQL.
Come posso utilizzare preparedStatement con numero variabile di condizioni nella clausola where?che funziona con un numero variabile di parametri in un documento di preparazione

Grazie

risposta

3

PrepardStatements non supportano un numero variabile di condizioni. Quello che fanno alcuni framework, è la cache di ogni PreparedStatement in una mappa in cui la chiave è la query.

Ogni volta che si desidera eseguire una query, è necessario creare la stringa per creare PreparedStatement, controllare se è presente nella mappa (e riutilizzarla) o crearne una nuova e aggiungerla alla mappa .

4

se si desidera aggiungere un numero variabile di condizioni nella clausola where utilizzare StringBuilder (StringBuffer se il suo multithreading env.) Ed eseguire il tempo in base alle condizioni concatenate/aggiunte alla stringa.

come

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


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

e successivamente creare dichiarazione preparata con questa query convertendolo in stringa

PrepareStatement(query.toString()); 
+0

Attenzione: Questo codice è suscettibile di SQL Injection. – rook

Problemi correlati