bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
6 mai 2008 à 23:26
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
8 mai 2008 à 02:25
Bonjour,
Mon programme utilise en ce moment SQL Compact Server, mais j'aimerai que l'utilisateur puisse aussi choisir Postgres.
Quelle est la façon la plus "jolie" pour qu'un programme supporte les 2 bdd?
Mon idée est de créer une interface pour chaque object clé d'une bdd, ie:
par exemple:
Interface ISqlConnection
implémenté: class SqlCompactConnection / SqlPostgresConnection
Interface ISqlCommand
implémenté pour les 2 aussi.
Interface ISqlParameter
Interface ISqlResultSet
etc. etc.
Ensuite, chaque interface implémentée ne serait qu'une façade des classes existantes (SqlCe**** pour Compact SQL, Npgsql**** pour Postgres). Tout cela m'a l'air ok, mais je butte sur:
Si je créé une connection pour SQL Compact Server, comment faire pour que tous les autres objets base de données (command, parameter, resultset) soient aussi de type SQL Compact Server?
Comment traiter de façon astucieuse les différences de langage SQL ?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 7 mai 2008 à 09:03
Déjà, si tu utilises le framework .net 2.0 (ou plus), à la place des interfaces, je te conseille d'utiliser la factory DbProviderFactory... et ainsi DbCommand, DbConnection...
Ensuite ne ce qui concerne les requêtes... il n'y a pas vraiment de solution : soit tu fais le plus générique possible avec des requêtes classiques... soit tu fais des procédures stockées.
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 7 mai 2008 à 17:40
Je ne connaissais pas ce truc DbProviderFactory... ca a l'air sympa mais je crois que je vais me lancer dans un design pattern factory avec mon interface + façade, au moins j'aurais le controle total sur ce que je fais.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 7 mai 2008 à 21:05
C'est dommage de réinventer la roue... surtout que ce genre de problèmatique est quand même relativement récurrente et que les solutions existent (comme celle citée par sebmafate, ou encore l'application block dédié a la couche d'accès aux données - qui doit même être dans Enterprise Librairie il me semble)
<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Vous n’avez pas trouvé la réponse que vous recherchez ?