[c#] Modification d'une connectionString dans le programme
Bonjour,
Je développe un programme qui viens chercher des informations stockées dans des bases de données.
Il y a tellement d'information qu'une base est crée chaque mois.
La base en cours s'appelle BDD, et les précédentes sont nommées sous le format suivant : "BDD_jj_MM_yyyy" (jj : dernier jour du mois).
Mon problème est que je n'arrive pas à changer ma chaine de connexion pour accéder à une autre base de donnée pendant l'exécution du programme.
Après plusieurs recherches, j'ai fait le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
[...]
majConnectionString(debut, fin);
Class1 class1 = new Class1();
string[] donnees = class1 .getDonnees(debut, fin);
[...]
private void majConnectionString(DateTime debut, DateTime fin)
{
string bdd;
if (!debut.Month.Equals(DateTime.Today.Month))
{
bdd = "BDD_";
bdd += DateTime.DaysInMonth(debut.Year, debut.Month) + "_" + debut.ToString("MM") + "_" + debut.Year;
}
else
{
bdd = "BDD";
}
int i;
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
for (i = 0; i < config.ConnectionStrings.ConnectionStrings.Count; i++)
{
if (config.ConnectionStrings.ConnectionStrings[i].Name.Contains("BDDConnectionString"))
break;
}
try
{
ConnectionStringSettings oldConnex = config.ConnectionStrings.ConnectionStrings[i];
config.ConnectionStrings.ConnectionStrings.Remove(oldConnex);
}
catch (Exception err) { }
ConnectionStringSettings newConnex = new ConnectionStringSettings("MON_PROJET.Properties.Settings.BDDConnectionString", "Data Source=SOURCE;Initial Catalog=" + bdd + ";User ID=USER_ID;Password=PASSWORD");
config.ConnectionStrings.ConnectionStrings.Add(newConnex);
config.Save(ConfigurationSaveMode.Modified);
} |
Mais cela ne marche pas comme je le voudrais :
en cours d'exécution, le fichier "MON_PROJET.exe.config" est bien modifié.
Mais je n'arrive à accéder qu'à la base dont la chaine de connexion était dans le fichier MON_PROJET.exe.config avant l'exécution du programme.
En réalité ça "marche", mais il faut que je quitte le programme à chaque fois.
Ce qui n'est premièrement pas vraiment pratique, mais surtout très problématique si je veux fait une requête à cheval sur deux mois (ou même sur plusieurs mois).
Avez vous une solution, ou au moins une piste à exploiter?
Merci d'avance