benbobo55
Messages postés14Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention29 août 2005
-
4 août 2005 à 10:36
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 2010
-
5 août 2005 à 16:43
Voilà mon probleme est que g pour le moment un prog tournant sous sql server, les commandes de connexion, query ... sont en dure dans le code.
Dans un premier temps, je dois develloper une interface independante pouvant travailler avec mysql et dans un future avec des bases de type : interbase, postgresql...
dois je obligatoirement changer les instructions de commande?
Comment puis je réaliser cela?
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 5 août 2005 à 08:45
Hello,
Ton problème est complexe, et demande plusieurs choses :
- Tout d'abord, la connection. En pricipe, la "ConnexionString" ne devrait pas être en dur dans le code, mais placé dans un fichier de config.
- Deuxièmement. Si tu passes de SQLServer à une autre base de donnée, tu auras des problèmes avec les DataAdapter, DbCommand, etc. Je pense que tu à utiliser les classes réservées à SQLServer (SqlDataAdapter, ...). Il y a à mon avis deux solutions :
- soit tu passes tout par ODBC, comme la quasi totalité des bases de données le supporte.
- soit tu utilise des interface (IDataAdapter, ...) et tu fait du late binding pour créer un objet de la bonne classe (qui sera aussi définie dans le fichier de config). C'est un peu plus compliquer, mais peut-être un peu plus efficace qu'ODBC.
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201436 5 août 2005 à 09:51
comme SharpMAO, je te conseille l'implémentation des Interfaces IDb... C'est un peu obscurt au début, mais l'avantage c'est que tu peux greffer n'importe quelle BdD dessus.
benbobo55
Messages postés14Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention29 août 2005 5 août 2005 à 15:38
Merci pour vos conseils!!
Dans mon interface, ayant utiliser une api (dll) pour slqserver, la system.data.sqlclient de dot.net, g cherché après une dll pour dans un premier temps mysql. je l'ai trouvé et elle est exactement la meme dans ca construction que celle de sqlserver!!
comme je l'ai dit, je dois me focaliser sur Mysql, je ne fais que des connexion, update, select, drop, insert, create.
Ma question est : que doit contenir dans un premier lieu mon interface en terme de methode?
A oui, question a Sharpmoa, qu'entend tu par "late binding" ?
Si vous avez des questions!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 5 août 2005 à 16:43
Hello,
Le late binding permet d'instancier un objet sans connaître précisément son type à la compilation. Ca peut servir dans ton cas. Je m'explique :
Tu as dans le fichier de config le nom de l'assembly (dll) pour la base de données, ainsi que les noms des classes à utiliser (DataAdapter, DbCommand, DbConnection, ...).
Tu charge la librairie :
System.Reflection.Assembly TheAssembly = System.Reflection.Assembly.Load(NomDeLassembly);
Tu peux ensuite créer un objet de la classe que tu veux :
IDbConnection dc = (IDbConnection )TheAssembly.CreateInstance(NomDeLaClasse);