Forse non ho ben capito il problema, ma io in genere faccio così:
creo un file di configurazione che in genere chiamo nomeApplicazione.exe.config
codice:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="mySqlConnectionString"
value="database=some;server=192.192.192.192;port=3333;user id=somei;password=xxxxxxxxxxx" />
</appSettings>
</configuration>
Dato che non sono ancora riuscito a capire come o cryptare questo file, oppure a passargli valori dinamici, per il momento creo un'unica classe (ad esempio per connettermi al db) e modifico il valore del file:
codice:
public static class ConnClass
{
public static MySqlConnection Create()
{
string connectionString;
Configuration configurator = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configurator.AppSettings.Settings["mySqlConnectionString"].Value = "database=veroDatabase;server=veroIpServer;port=veraPorta;user id=veroUtente;password=veraPassword";
configurator.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
connectionString = ConfigurationManager.AppSettings["mySqlConnectionString"];
MySqlConnection connessione = new MySqlConnection(connectionString);
connessione.Open();
return connessione;
}
}
Poi, da un form qualsiasi o da un qualsiasi evento, basta che chiamo il metodo "Create" della classe:
codice:
private void collegaAlDb_Click(object sender, EventArgs e)
{
try
{
using(MySqlConnection cn = ConnClass.Create())
{
//faccio quello che devo fare
cn.Close();
cn.Dispose();
//queste due istruzioni sono superflue qui, dato che all'uscita di "using" la chiamata
//a IDisposable verrà comunque effettuata
}
}
catch(MySqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
P.S.: Scusate l'OT, ma dove potrei aprire un thread riguardante problemi relativi a MySql e i triggers?
Grazie e scusate.