Perfettamente daccordo con Sabrina, ti faccio comunque un piccolo esempio di pattern singleton applicato a
un database access di nome Database.mdb che conterrà le tue tabelle
[code]
using System.Web;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data;
class DbSingleton
{
string currentPath;
OleDbConnection connection ;
private static DbSingleton dbIstance;
private DbSingleton()
{
currentPath = Application.StartupPath;
}
public static DbSingleton getDbIstance()
{
if (dbIstance == null)
{
dbIstance = new DbSingleton();
}
return dbIstance;
}
public void Open(string dsn, string db)
{
string strDSN = dsn + currentPath + "\\" + db;
connection = new OleDbConnection(strDSN);
connection.Open();
}
public void Close()
{
connection.Close();
}
}
[/code]
aggiungendo una classe contenente il codice di cui sopra al tuo progetto, puoi aprire e
chiudere la connessione al db da qualsiasi finestra della tua applicazione, indipendentemente che sia
una applicazione mdi oppure no, basta scrivevre nel gestore di evento che vuoi scateni la connessione o
la disconnessione dal db queste semplici righe di codice:
[code]
// per stabilire la connessione
DbSingleton.getDbIstance().Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=", "Database.mdb");
// per chiudere la connessione
DbSingleton.getDbIstance().Close();
[/code]
naturalmente, non puoi chiudere la connessioen se prima non la hai aperta.
Nota bene: implementando i corretti metodi per interrogare il database puoi richiamarli allo stesso
modo, come questi, da qualsiasi finiestra del tuo programma, ad esempio se nel tuo Database.mdb
hai una tabella di nome Membri che contiene un campo username e uno eMail ci puoi accedee in lettura e scrittura
(sempre da qualsiasi finestra della tua applicazione), aggiungendo alla classe su, per esempio altri 2 metodi come:
[code]
// setta la email relativaqmente all' user
public void setMail(string user, string mail)
{
string strQuery = "UPDATE Membri SET eMail=" + "'" + mail + "'" + " WHERE Membri.username=" + "'" + user + "'";
OleDbCommand command = new OleDbCommand(strQuery, connection);
OleDbDataReader reader = command.ExecuteReader();
}
// legge la email dell' user passato come argomento ap metodo
public string getMail(string user)
{
string strQuery = "SELECT eMail FROM Membri WHERE Membri.username=" + "'" + user + "'";
OleDbCommand command = new OleDbCommand(strQuery, connection);
OleDbDataReader reader = command.ExecuteReader();
if (reader.Read())
{
return reader[0].ToString();
}
else
{
return null;
}
}
[/code]
i 2 metodi su interrogano il database sulla email relativamente all' user.
Nel gestore di evento li richiami così:
[code]
//per settare il valore della email dell' utente che desideriamo
DbSingleton.getDbIstance().setMail(lblUser.Text, lblMail.Text);
//per accedervi in lettura
DbSingleton.getDbIstance().getMail(lblUser.Text);
[/code]
Ti ho fatto esempio con un db access!... vedi tu per MySql, mai usato, se non qualche volta da applicazioni console in Python e non sotto .NET, poi... non ti voglio togliere il gusto di imparare
p.s. Con quello che ha detto Sabrina io sono perfettamente daccordo!
scusatemi se mi sono permesso di interpretare la domanda...
la risposta corretta alla tua domanda te la ha data Sabrina,
la mia era e resta solo una supposizione sulle necessità reali del tuo problema.
Spero di non aver offeso nessuno, perchè, se spesso così sembra io posso garantire che non è nelle mie intensioni,
ma sarà malformazione personale di cui devo iniziare a preoccuparmi.
Saluti distinti a tutti.