Ciao a tutti,
potresti usare la tecnica suggerita da Gho5t, ma solitamente per fare queste cose, a livello di "architettura applicativa" si usa una classe dove puoi mettere una proprietà statica (shared in vb.net).
Ad esempio io uso una classe "ProgramManager" dove tengo le cose "comuni" ai vari layer dell'applicativo, quindi io avrei fatto qualcosa tipo:
public class ProgramManager
{
public static string ConnectionString { get; set; }
...
chiaramente da qualche parte viene settata, magari in una fase iniziale etc...e poi usata dove serve.
A livello invece di "oggetto" connessione, ti consiglio di tornarla ogni volta che ti serve ed usarla con il pattern "Dispose" ossia la crei, la apri, la usi e poi la chiudi, appunto con questa ultima operazione fai il dispose dell'oggetto, liberando le risorse allocate.
Per averla pubblica anche in questo caso, puoi usare un metodo statico, che ti torni appunto l'oggetto quando ti serve:
...
public static DbConnection GetConnection()
{
return new SqlConnection(ConnectionString);
}
}
e appunto usarla nel codice dove ti serve in questo modo:
...
using(DbConnection cn = ProgramManager.GetConnection())
{
DbCommand cmd = cn.CreateCommand();
cmd.CommandText = "SELECT ... ";
cn.Open();
DbDataReader rd = cmd.ExecuteReader();
while(rd.Read())
....
}
...
Il codice è in C# ma puoi tranquillamente convertirlo in vb.net se serve...o addirittura in Java (con qualche aggiustamento)
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo