Bonjour,
Je travaille sur un programme d'extraction/transformation de données.
En se basant sur une variable (qui, si possible, peut évoluer au fil de l'exécution du programme), je détermine quel connecteur de base de données utiliser :
- Natif SQL Server
- ODBC
- OLE BD
(et pourquoi pas MySQL, Oracle, DB2, etc.)
Voici une partie du code concernée :
Code csharp : 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 using System.Data; using System.Data.SqlClient; using System.Data.Odbc; using System.Data.OleDb; [...] public IDbConnection Cnx { get { if (_Cnx == null) { switch (CnxType) { case "mssql": _Cnx = new SqlConnection(CnxString); break; case "oledb": _Cnx = new OleDbConnection(CnxString); break; case "odbc": _Cnx = new OdbcConnection(CnxString); break; default: throw new NotImplementedException(CnxType); } } if (_Cnx.State != ConnectionState.Open) { _Cnx.Open(); } return _Cnx; } } [...]
L'avantage de ce code, c'est qu'ici, je crée mon objet de connexion à la base de données en fonction du type de base désirée, et travaillant par la suite avec un IDbConnection, je ne suis pas obligé de dupliquer tout mon code pour travailler.
En contre-partie, je me retrouve avec plein de "using" inutiles.
Et obligé d'installer sur le PC cible tous les connecteurs prévus, même ceux qui ne servent à rien dans le contexte d'utilisation.
Est-ce possible de faire le "using" au moment de l'exécution, plutôt qu'au moment de la compilation ? (et éventuellement planter lamentablement si le connecteur n'est pas présente)
Partager