Newsgroup: it.comp.lang.delphi
Titolo: SQL + pulita

Esiste un modo per creare una query piu pulita? Questa funziona ma non credo
sia il massimo...
  Dati.IBQuery2.Active:=false;
  Dati.IBQuery2.SQL.Clear;
  Dati.IBQuery2.SQL.Add('select * from TABELLA where CAMPO1 like
''%'+edit1.text+'%''and CAMPO like ''%'+edit2.text+'%''');
  Dati.IBQuery2.Active:=true;
Nella query devo tenere presente dei dati dell'utente nei edit box.
Grazie

  Dati.IBQuery2.Active:=true;
Penso che non sia ottimizzabile...perchč pensi che possa essere "piů
pulita"?
Tuttalpiů fai un While .. Do che perň non ti modifica la query!
Ciao :)
--
- Carlo -

pulita"?
A mio avviso puo' esserlo, utilizzando i parametri :
Dati.IBQuery2.SQL.Add( 'select * from TABELLA where CAMPO1 like
:PARAMETRO1 and CAMPO2 like :PARAMETRO2' ) ;
Poi assegni i parametri come :
Dati.IBQuery2.SQL.ParamByName( 'PARAMETRO1' ).AsString := 
                                          '%' + Edit1.Text + '%' ;
Dati.IBQuery2.SQL.ParamByName( 'PARAMETRO2' ).AsString := 
                                          '%' + Edit2.Text + '%' ;
L'uso dei parametri nelle query SQL offre un certo grado di
scalabilita' ai programmi che li sfruttano.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

scalabilita' ai programmi che li sfruttano.
Se non prepari la query č inutile..
Ciao,
-=SIMO=.

you wrote:


? E' inutile che cosa ? L'uso dei parametri ?
L'uso dei parametri va bene anche senza preparare la query.
La preparazione della query serve semplicemente ad ottimizzare la sua
esecuzione, ma non e' indispensabile. Inoltre Delphi esegue comunque
la preparazione della query e l'"unprepare" al termine. Anzi, quando
una query viene eseguita piu' volte, bisogna fare attenzione a non
abusare con "Prepare".


 >Se non prepari la query è inutile..


abusare con "Prepare".
Andrea,
ho appena notato il crosspost di questo messaggio su libero.database e se
Nando Dessena (che di DB ne sa tanto....giusto per intenderci č quello che
ha tradotto MD5 di Cantů in Italiano) + altri bravi elementi non hanno detto
nulla per perfezionare quella query dubito che sia perfezionabile....poi č
possibile che il tuo metodo sia pure migliore, perň...
Ciao! :)
--
- Carlo -
BSSoftware Tips Mailing-List Support


L'uso dei parametri senza preparare la query non dą nessun beneficio in
termini di prestazioni.
La preparazione, come hai giustamente detto, č automatica e proprio per
questo, se la query deve essere ripetuta N volte, Delphi la Prepara e
Unprepara ogni volta, con inevitabile spreco di tempo e risorse lato server.
Se invece la prepari esplicitamente la prepari una volta sola...
Ciao,
-=SIMO=-

Ma quante ne sai..................
eh eh eh ;)


possibile che il tuo metodo sia pure migliore, perň...
pero' che cosa ?
L'uso dei parametri nelle query e' senza dubbio migliore che la
concatenazione di stringhe. E' previsto dallo standard del linguaggio
SQL e non vedo perche' non vada utilizzato.


Se invece la prepari esplicitamente la prepari una volta sola...
Ripeto : non si sta parlando di prestazioni.


Ripeto : non si sta parlando di prestazioni.
ALT, non so cosa tu intenda per 'pulizia a livello di leggibilità', io
intendo pulizia che faccia le operazioni necessarie nella maniera + veloce
ed efficente!
Penso che anche gli altri la abbiano intepretata in questo modo,
personalmente non mi interessa avere una query *bella* che poi sia + lenta
di una query "brutta".
Ciao!
--
- Carlo -

di una query "brutta".
Guarda che l'uso dei parametri non rallenta affatto l'esecuzione della
query !!! La sostituzione viene fatta PRIMA che la query venga
eseguita.



Molte grazie...
Adesso ne so molto di più anch'io.. 8)
Ciao
-=SIMO=-

 eseguita.
Vero, anzi verissimo, ma con un uso mirato del Prepare la query oltre che
"pulita" o "elegante" o"leggibile" sarebbe anche più "efficiente", no ?
Allora, a cosa è servita la tua polemica ?
Ciao,
-=SIMO=-

Allora, a cosa è servita la tua polemica ?
Quale polemica ? io non ho fatto nessuna polemica !