Variabile Globale

martedì 02 marzo 2004 - 08.57

123456 Profilo | Newbie

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

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

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

...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

Credo di aver capito la procedura vedendo il Post di sarto76

Ciao a tutti.

Brainkiller Profilo | Guru

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

Sono d'accordo Brainkiller canbierò procedura visto che non ho perdita di prestazioni.

Grazie
Ciao
Maurizio

Brainkiller Profilo | Guru

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
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 !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5