Entra

View Full Version : [VB.NET] Programma in rete: accorgimenti


OrcaAssassina
02-02-2008, 09:05
Ho un programma in VB.NET
Ho un DB in SQLSERVER2005

Devo far lavorare il programma in rete

Mi date alcuni accorgimenti sulla costruzione.

Ad esempio,

- apro la connesione
- carico dati in dataset
- passo il dataset ad una griglia
- poi chiudo dataset
- chiudo la connessione

Ora devo fare un ADD

- apro la connessione
- eseguo la INSERT
- chiudo la connessione

Va bene cosi???

Ditemi voi qualè il criterio migliore

Ciao e grazieeeeee

simoneart
02-02-2008, 11:09
In un programma io creerei un'istanza di connessione all'avvio del programma e la manterrei attiva per tutta la durata dell'esecuzione, chiudendola solo all'uscita del programma.

Ti devi preoccupare una volta sola dell'apertura e chiusura della connessione e essendo ADO.NET un sistema di accesso ai dati disconnesso non dovrebbe comportare nessuna differenza prestazionale (se non un miglioramento non avendo la necessità di effettuare la connessione ogni volta).

0rph3n
02-02-2008, 15:03
Ovviamente dipende dal cosa la tua applicazione è destinata a fare.
L'approccio suggerito da simoneart non è sbagliato, ma offre poca flessibilità.
Pensa se ti dovessi servire di connessioni multiple...

ADO.NET gestisce il pooling delle connessioni.
Semplificando i metodi Open e Close non aprono e chiudono direttamente una connessione.
Open richiede una connessione libera che risiede nel pool che viene poi lockata.
Close (analogamente a Dispose) la libera rendendola disponibile a chiunque ne faccia richiesta.

Se siete interessati all'argomento con una googlata trovate un po' di informazioni.

Per essere sicuri che una connessione venga liberata dopo essere stata utilizzare potete usare gli approcci seguenti:


using (SqlConnection myCon = new SqlConnection(connectionString))
{
myCon.Open();
// fai quello che devi fare
}


SqlConnection myCon = new SqlConnection(connectionString);
try
{
myCon.Open();
// fai quello che devi fare
}
catch ()
{
// gestisci le eccezioni che devi gestire
}
finally
{
myCon.Close(); // oppure myCon.Dispose()
}


Il mio consiglio quindi è quello di istanziare un oggetto connessione, di aprirlo immediatament prima di servirtene e di chiuderlo non appena non ti sia più utile.

Scusa per il codice in C#, ma non avevo voglia di cercare la sintassi in VB.NET

'iao