Interface IDbDataAdapter

cs_jacma Messages postés 54 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 6 septembre 2005 - 8 nov. 2003 à 12:51
cs_jacma Messages postés 54 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 6 septembre 2005 - 10 nov. 2003 à 12:17
Bonjour
Quel est l'intérêt d'implémenter l'interface IDbDataAdapter plutôt que de se servir directement de SqlDataAdapter?
Merci

6 réponses

cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
8 nov. 2003 à 14:29
De pouvoir changer de SQL Serveur a une base ODBC sans devoir changer les type partout dans ton appli.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
cs_jacma Messages postés 54 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 6 septembre 2005
8 nov. 2003 à 15:08
Merci de ta réponse. Cependant, je ne saisis pas bien le truc. Si j'ai la ligne suivante avec l'interface IDbDataAdaper:
IDbDataAdapter myDataAdapter = new SqlDataAdapter(strReq, strConn);

ou sans l'implémentation de l'interface:
SqlDataAdapter myDataAdapter = new SqlDataAdapter(strReq, strConn);

si je change de fournisseur, il me faudra bien dans les deux cas ré-écrire le code avec par exemple:
... myDataAdapter= new OleDBDataAdaper...
:question)
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
8 nov. 2003 à 18:26
Evidement mais pour les appels de fonction tu n'aura aucun probleme, si tu debrouilles bien, il n'y a que les instruction new qui sont a retoucher.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
cs_jacma Messages postés 54 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 6 septembre 2005
9 nov. 2003 à 11:03
Bonjour
Je pense avoir saisi. Sans l'implémentation de l'interface IDbDataAdapter, pour accéder à une base SqlServer, je dois déclarer:
SqlConnection myConn;
SqlDataAdapter myDataAdapter;
SqlCommand myCommand;

et initier les instances des objets voulus pour m'en servir (ou faire les deux en même temps).
myConn = new SqlConnection(...);
myAdapter = new SqlDataAdapter();
myCommand = new SqlCommand(...);

Si j'attaque une base Access, je dois réécrire les 3 lignes de déclaration en remplaçant "Sql" par "OleDB", et bien sûr pareil pour les créations d'instances.
Par contre, si je déclare:
IDbConnection myConn;
IDbDataAdapter myDataAdapter;
IDbCommand myCommand;

ces trois lignes de codes ne changeront pas si je passe d'une base SQL Server à un autre type de base (Access par exemple). Seules le code d'instanciation changera comme suit:
myConn = new OdbcConnection(...);
myDataAdapter = new OdbcDataAdapter();
myCommand = new OdbcCommand(...);

Donc moins de code et plus facile à maintenir. Est-ce bien celà :question)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
10 nov. 2003 à 02:20
Voila t'as tout compris :)

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
cs_jacma Messages postés 54 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 6 septembre 2005
10 nov. 2003 à 12:17
Bonjour
Un petit complément néanmoins. Pour instancier un objet SqlCommand, il faut alors faire un cast (conversion explicite en un type de données pour ceux qui ne savent pas, ce qui était mon cas il y a fort peu de temps...) ;) :
myCommand = new SqlCommand(strReqInsert,(SqlConnection) myConn);

Il faut en effet passer un objet connexion et non simplement une interface. Or, myConn a été déclaré comme étant une instance de IDbConnection...
Merci pour ton aide qui m'a bien fait avancer.
0
Rejoignez-nous