8 messaggi dal 08 maggio 2002
Per favore potreste elencarmi i vari motivi per cui è meglio aprire e chiudere una connessione con un db ogni qual volta si deve fare un'operazione e non lasciarla aperta?

164 messaggi dal 27 novembre 2001
<b>jjmlit ha scritto:</b>
<BLOCKQUOTE id=quote><font size=1 face="Arial" id=quote><hr height=1 noshade id=quote>
Per favore potreste elencarmi i vari motivi per cui è meglio aprire e chiudere una connessione con un db ogni qual volta si deve fare un'operazione e non lasciarla aperta?


<hr height=1 noshade id=quote></BLOCKQUOTE id=quote></font id=quote><font face="Arial" size=2 id=quote>
Perchè rallenta tantissimo le prestazioni sovraccaricando il server.
Ma soprattutto, a che pro si dovrebbe tenere aperta una connessione?
Inoltre vanno settati a Nothing sia il recordset che la connessione...tutta memoria libera in più!

 Marco "Scetticus"

Marco "Scetticus"
8 messaggi dal 08 maggio 2002
Un mio collega di lavoro dice che invece è meglio tenerla aperta perchè si risparmiano delle operazioni inutili (penso si riferisca a quelle di connessione) e quindi è più veloce

11.886 messaggi dal 09 febbraio 2002
Contributi
Il tuo amico sbaglia perchè non sa che rieseguire di nuovo la connessione al server non costa niente. Casomai occupa più tempo l'apertura di un recordset:
se hai 50.000 record su 10 tabelle e li vuoi tutti ordinati per data allora è logico che riaprire il recordset appesantisce di più il server che non se lo lasciassi aperto.
Ma poi che vuol dire? che per tutta la sessione il database è aperto? In questo caso è l'ultima delle possibilità in ordine di preferenza.

Sappi che se usi Access in particolar modo, non puoi permetterti di lasciare tutte le connessioni aperte (mi pare che ne supporti al massimo una trentina). Se non devi aprire recordset ma solo aggiornare / cancellare i dati, usa i comandi sql UPDATE e DELETE, fai in un lampo.

-----------------------
Da una perla dal saggio:
Quando non hai capito, devi dire "non ho capito", no che dici che hai capito e invece non hai capito un cavolo. Hai capito?
-----------------------

Enjoy learning and just keep making
3.122 messaggi dal 16 maggio 2002
Io di solito uso lo stesso oggetto Recordset per ogni insieme di records, cambiando ogni volta il Source dell'oggetto.
Nel caso io però debba aprire recordset diversi in successione non mi conviene distruggere ogni volta l'istanza di Recordset, giusto? Io faccio semplicemente
rs.Close()
rs.Source="SELECT ...."
rs.Open()
...
Invece quando non utilizzo rs per qualche riga di codice dite che conviene distruggere l'oggetto con un bel Set rs=Nothing?
Anche io ero convinto del contrario, ovvero che costasse molto in termini di tempo e di utilizzo macchina la distruzione e il successivo istanziamento di un oggetto.

Jim Raynor
http://www.freestyler.it

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
101 messaggi dal 05 luglio 2001
Sia l'oggetto Connection che l'oggetto recordset devono essere ditrutti (=Nothing) e ricreati ad ogni utilizzo per garantire la scalabilità dell'applicazione. In effetti le connessioni al database non vengono necessariamente ditrutte ma messe un uno stato di "pooling" ovvero di condivisibilità con altre richieste cosa che non è vera se la connection resta aperta.
Se non è necessario mantenere un recordset connesso al database (per esempio per fare delle modifiche) è consigliabile usare un "disconnected recordset" impostando la proprietà Connection del recordset a Nothing.

Anche il riutilizzo del recordset non è consigliabile, dovresti sempre dichiarare (Dim) tanti recordset quanti te ne servono per ogni operazione e poi distruggerli (set recordset=nothing) quando hai finito di usarli.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.