Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Query TatbleAdapter
venerdì 16 aprile 2010 - 09.32
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Gemini
Profilo
| Expert
856
messaggi | Data Invio:
ven 16 apr 2010 - 09:32
Ciao a tutti
sto cercando di utilizzare i TableAdapter e ho un problema con le query.
Come faccio a definire delle query le cui condizioni dipendono dalla presenza o no di un campo?
Per esempio in una ricerca avanza non è detto che l'utente inserisca tutti i campi oppure la creazione della query potrebbe variare in base alel scelte fatte dall'utente.
Es.:
string sqlCognome = string.Empty;
if (cognome != string.Empty)
sqlCognome = " AND i.cognome like '%" + cognome + "%' ";
else
sqlCognome = " AND nome like '%" + nome + "%' ";
string sqlComuneStudio = string.Empty;
if (comune_studio != string.Empty) sqlComuneStudio = " AND i.localita='" + comune_studio + "' ";
C'è un modo per passare al TAbleAdapter questa query da codice?
Grazie mille
string sql = "SELECT * " +
"FROM iscritti " +
"WHERE 1 " + sqlCognome + sqlComuneStudio;
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 21 apr 2010 - 10:46
>Ciao a tutti
Ciao
>sto cercando di utilizzare i TableAdapter e ho un problema con
>le query.
>Come faccio a definire delle query le cui condizioni dipendono
>dalla presenza o no di un campo?
>Per esempio in una ricerca avanza non è detto che l'utente inserisca
>tutti i campi oppure la creazione della query potrebbe variare
>in base alel scelte fatte dall'utente.
>Es.:
>string sqlCognome = string.Empty;
>if (cognome != string.Empty)
>sqlCognome = " AND i.cognome like '%" + cognome + "%' ";
>else
> sqlCognome = " AND nome like '%" + nome + "%' ";
>string sqlComuneStudio = string.Empty;
>if (comune_studio != string.Empty) sqlComuneStudio = " AND i.localita='"
>+ comune_studio + "' ";
>C'è un modo per passare al TAbleAdapter questa query da codice?
Intanto devo farti presente che con query scritte come mi hai illustrato sei soggetto a sql injection. Dai una letta a questo articolo:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx
detto questo, se potessi utilizzare il framework 3.5, ti consiglierei di ricavare gli utenti per alcuni campi obbligatori nella ricerca e poi lavorarteli con LINQ per non appesantire più di tanto il database.
Inoltre, evita sempre di permettere ricerce su "tutti i campi" o comunque su molti di essi. Cerca di pilotare chi usa soluzioni di questo tipo verso un filtro mirato dei VERI campi che l'utente usa per ricercare.
Di solito si tratta di vizi
Comunque puoi anche usare una soluzione non troppo elegante per evitare le if, prestazionalmente non è il massimo. Basta fare una where tipo:
WHERE
(@Parametro1 IS NULL OR Campo1 = @Parametro1)
AND
(@Parametro2 IS NULL OR Campo2 = @Parametro2)
...
ma devi almeno usare query parametriche e non concatenazioni come fai tu.
>Grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !