Passare connessione db tra form

lunedì 16 aprile 2012 - 11.21
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio Express  |  Oracle 10g

krisbass Profilo | Newbie

Ciao,
ho bisogno di capire come funziona la logica di passaggio di in informazioni tra due form della stessa applicazione, in particolare di una connessione a Oracle.
Nella prima form, maschera di accesso, inserisco user e password e verifico se mi sono connesso, se sono connesso apro la seconda maschera.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

nella seconda maschera devo scrivere qualcosa per reperire i dati di connessione della prima? O devo aprire una nuova connessione?

Per ora nella seconda form ho scritto:
Dim dbQuery As New OracleCommand dbQuery.Connection = conn

e visual studio mi dice che il nome conn non è dichiarato.

Gho5t Profilo | Junior Member

Ciao,
come le apri le 2 form?
Chiudi la prima e poi apri la seconda o c'è una form padre per tutte e due?

comunque basta che metti nella Form che devi aprire come variabile public la connessione:
Public conn As New OracleConnection

e poi nella Form vecchia che apre la nuova, gli passi la connessione una volta creata:
Me.Hide()
Errore.conn = conn
Errore.Show()
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

freeteo Profilo | Guru

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
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5