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 : Sélectionner tout - Visualiser dans une fenêtre à part
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