Variabile globale?

domenica 16 luglio 2006 - 03.36

shaolin Profilo | Newbie

Ciao a tutti.
Devo creare un'applicazione che interagisce con un database remoto.
Mi chiedevo: se io creo una classe che gestisce le interazioni base col database, per esempio "connetti", "disconnetti", "EseguiQuery", se creo un'istanza di questa classe in una form di login utente, poi come mi devo comportate nelle altre finestre?

Ammettiamo che creo l'istanza nella finestra di login

dim conn as new myclassdb (.............)

poi mi accorgo che nella finestra principale che è un contenitore (MDI), nella quale ho il menu, devo fare altre operazioni, in linea teorica dovrei creare un'altra istanza della classe, ma ciò non mi torna.

Io con vb6 avrei creato una variabile globale in un modulo e quindi "conn" sarebbe visibile a tutti e già valorizzata al passaggio da una form all'altra.

Spero di essere stato chiaro (non credo però), nel caso proverò a specificare meglio.

Ringrazio per le risposte.

Max

alextyx Profilo | Expert

Può darsi che io stia trascurando qualcosa...eventualmente me lo chiarirai, ma credo che tu possa tranquillamente creare una classe, usando 'Public' anzichè Dim (che equivale a private, tranne che all'interno di strutture) in un modulo e accedervi da qualunque punto del progetto. Addirittura dovresti poter dichiarare la tua istanza di classe (Public c1 as conn) e poi invocarne il metodo costruttore (c1 = new conn) da dove ti è più comodo, magari passando dei parametri di inizializzazione che solo in quel momento hai disponibili (c1 = new conn(primoparam,secondoparam)), ovviamente questo nel caso tu abbia dotato la tua classe di un overload del costruttore. Fammi sapere...ciao

shaolin Profilo | Newbie

Ciao, innanzitutto grazie per la risposta :)

Ti spiego il mio dubbio.
Io ho creato una classe pubblica in questo modo:

public class myconndb

All'interno ho un membro che rappresenta la connessione al database (m_conn).

Tralasciando tutto il resto ti chiedo questo:

io tramite m_conn apro il database, ma lo faccio una volta sola in una form di login.
Però questa classe myconndb fa altre cose oltre ad aprire il db e quindi quell'istanza credo debba essere visibile altrove.
Forse tu con il tuo suggerimento PUBLIC C1 as myconndb mi stavi proprio dicendo quello?

Eventualmente se tutto ciò ti sembra "accrocchioso", quale può essere il metodo migliore per gestire questa situazione?

Grazie ancora

Max

alextyx Profilo | Expert

Sì, ti stavo suggerendo che non avresti dovuto avere problemi di visibilità, dichiarandola ed eventualmente istanziandola, come pubblica in un modulo. Se la classe deve tenere memoria di ciò che ha fatto, ad uso e consumo di chiunque vi acceda, allora va bene creare un'istanza 'globalmente visibile', altrimenti potresti anche creare istanze diverse.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5