Choix du type pour la création d'un objet selon un critère
Bonjour
je veux créer une connexion (cnx) vers une base de données, qui peut être SQL server, DB2 IBM (AS400) ou Oracle
Pour connaître la base de données, je lis un paramètre : provider :
Pour éviter toute complication, j'ai mis en commentaire le code des deux derniers pour me concentrer sur SQL Server.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// Choix du fournisseur d'accès
int provider = (Convert.ToInt16(urlCpte))/10;
var cnx;
switch (provider)
{
case 1: // SQL Server
cnx = new SqlConnection();
break;
case 2: // DB2 AS400
//cnx = new SqlConnection();
break;
case 3: // ORACLE
//cnx = new SqlConnection();
break;
}
// Preparation
var chaine = urlCpte;
cnx.ConnectionString = Convert.ToString(ConfigurationManager.ConnectionStrings[chaine]);
DbDataReader dr;
cnx.Open();
... |
cnx est instancié dans le switch et cnx n'est donc pas utilisable dans le code APRES LE SWITCH.
Erreur de compilation
Si je fais :
Code:
1 2 3 4 5 6 7 8 9
| // Choix du fournisseur d'accès
int provider = (Convert.ToInt16(urlCpte))/10;
var cnx = new SqlConnection();
// Preparation
var chaine = urlCpte;
cnx.ConnectionString = Convert.ToString(ConfigurationManager.ConnectionStrings[chaine]);
DbDataReader dr;
cnx.Open(); ... |
ça marche, mais je perd le choix de type d'objet en fonction du paramètre provider
Question :
Comment faire ce switch pour créer cnx en fonction de la base de données ?