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
App. WinForms / WPF .NET
Variabile Globale
martedì 02 marzo 2004 - 08.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
123456
Profilo
| Newbie
32
messaggi | Data Invio:
mar 2 mar 2004 - 08:57
Un saluto a tutti,
Da oggetto probabilmente avrete già capito, in sintesi:
Nel mio progetto appena iniziato ho la connessione al db(Access(ADO)) in un modulo cs. Il nome della funzione private void OpenDataBase() la connessione viene effettuata regolarmente da una form ma, Domanda: Visto che la connessione al Db vorrei chiuderla solo quando esco dal Progetto in modo da averla sempre disponibile e non aprire e chiudere ogni volta che, tuttavia, mi sembra poco prestante, come posso rendere la variabile ConnectionDb - Stringa di accesso al DB globale al progetto per poter fare le mie Query dalle relative form?
Grazie
M.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 2 mar 2004 - 11:57
Ti riporto testo dal seguente documento:
http://support.microsoft.com/default.aspx?id=237844
...By default, ADO uses OLEDB session pooling to maintain a pool of connections to the database...
quindi ADO tiene aperto un pool di connessioni che riutilizza man mano quindi a livello di performance è ottimo. Se usassi la connessione a SQL c'è un'istruzione da abilitare per attivare il pooling.
ciao
david
123456
Profilo
| Newbie
32
messaggi | Data Invio:
mar 2 mar 2004 - 12:46
Scusa non capisco...come dovrei gestire il tutto, devo riscrivere ogni volta la connection per accedere al db?
Questo che vedi sotto è in un modulo cs
public class clsOpenDataBase
{
public void ConnectToAccess()
{
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data source= C:\Documents and Settings\username\" +
@"My Documents\AccessFile.mdb";
try
{
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show("Error Connect");
}
finally
{
conn.Close();
}
}
}
la mia domanda, scusa forse mi sono spiegato male: dalla form di inzio non ho capito come passare, magari anche come parametro, una SELECT a "conn.Open();"
M.
123456
Profilo
| Newbie
32
messaggi | Data Invio:
mar 2 mar 2004 - 13:58
...vorrei fare una cosa tipo Vb6 es(DAO)
Modulo Vb6
Global db as Database
Public sub ConnectDb()
StrConnection =App.Path &"\MyAccessFile.Mdb"
Set db=OpenDataBase(StrConnection)
end sub
Form load vb6
dim rsX as recordset
call ConnectDb
Set rsX=db.OpenRecordset(SELECT....)
.
.
.
rsx.close
Per poi utilizzare la variabile Db ovunque nel progetto
PS:
Accetto suggerimenti per procedure migliori ovviamente.
123456
Profilo
| Newbie
32
messaggi | Data Invio:
mar 2 mar 2004 - 14:08
Credo di aver capito la procedura vedendo il Post di sarto76
Ciao a tutti.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 2 mar 2004 - 14:25
Dicevo, che se apri e richiudi la connessione più volte in vari moduli del tuo progetto non hai una perdita di performance perchè viene usato un pool di connessioni. Un pool di connessioni è un set di connessioni che vengono aperte e chiuse all'occorrenza in base alle richieste dei software che ne fanno uso. Quindi non viene allocata memoria ogni qual volta che apri una OleDbConncetion perchè la struttura è già pronta.
Cmq. se preferisci portarti dietro una variabile ovunque, puoi farlo certo, ma non mi sembra una via agevole però.
ciao
david
123456
Profilo
| Newbie
32
messaggi | Data Invio:
mar 2 mar 2004 - 18:09
Sono d'accordo Brainkiller canbierò procedura visto che non ho perdita di prestazioni.
Grazie
Ciao
Maurizio
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 4 mar 2004 - 23:30
Si anche perchè quel tipo di strategia veniva spesso usato in passato con ASP 3.0 ma non era molto pulito a livello di codice portarsi dietro una connessione in tutte le pagine, meglio gestirla così di pagina in pagina aprire e chiudere.
Inoltre come ti dicevo se sali di complessità, è inevitabile passare a SQL Server e di conseguenza hai a disposizione un pool di connessioni che lavora molto meglio e si può gestire.
ciao
david
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 !