Vous êtes sur la page 1sur 41
SUPPORT DE COURS ADO.NET Table des matiéres Chapitre 1 : Vue d’ensemble de ADO.NET. 3 1. Introduction. 3 Tl Les API et leurs uilistions 3 1. Temninologie 3 2. ODBC (Open Data Base Connectivity)... Ea} 3. Architecture d'un pont ODBC 4 4. Pilote ODBC. 4 5. OLEDB 5 6, Avantages et inconvénients de l'utilisation des APIs unifiges 5 IIL Les modes de travail avec ADO.NET 5 1. Le mode déconnecté ...0nnsnninsmnininninimninnnnininnnnnininnninninnnnsnaninnnnnan 6 Le mode connect ..u.snsnsninnmninsininnmninnnieumninnnninimninnnninimninnnnnsnanennnie® 3. Comparaison des deux modes 6 IV. Architecture générale de ADO.NET. 6 1. Le modéle de fournisseur de données. 7 Fourisseurs de données de ADO.NET... 8 3. Connexion a une base de données. 9 4. Exemple d'utilisation de objet de connexion i Chapitre 2 : Travailler en mode connecté. 2 1. Interrogation de la base de données en mode connect. 2 1. Laclasse OleDbCommand. 2 2. objet OleDbParameter nn 13 3. Utilisation des espaces réservées dans les requétes. 1s Il. Récupération des enregistrements en mode connecté 15 1, Lobjet OleDbDataReader..nnnnnsmninsnninsnninnnnininnnmnininnnmninnnnsnninnnnne IS 2. Exemples de code d'interrogation de base de données 16 3. Requéte paramétrée 9 Chapitre 3 : Travailler en mode déconnecté 20 1. Architecture du modéle déconnecté =e 20 IL Les objets dadapiation de données (DataAdapter) 20 1. Proprigtés d'un DataAdapter 21 2. Lladaptateur OleDbDataAdapter 21 I, —_Llobjet DataSet 2B 1. Modéte objet d'un DataSet 23 Ie CAD Dea Tie ctereeeetere eee eeeeeoo 3. Llobjet DataTableCollection .nssimsnnnmnmnnninninnmninnmnnnmarinsnsnnanarnane 2 4. Lobjet DataColumn. 27 5. Llobjet DataRow. 28 6 Lobjet CommandBuilder 32 7. Lamise & jour des données a partir d'un DataSet 33 Support de Cours ADO.net || Lipro TUS 2023-2024 1 pag, Bec © Dr Louis Bernard NGUENAN 8. Lrobjet DataRelation 9 Les objets contraintes 37 38 Support de Cours ADO.net i Lipro TUS 2023-2024 2 © eons Bernard NGUENANG Chapitre 1 : Vue d’ensemble de ADO.NET I. Introduction Uaccés aux données est un élément important dans la majorité des applications développées aujourd'hui. Microsoft a proposé une panoplie de technologies d'accés aux données (ODBC, DAO, RDO, ADO). ADO.NET (anciennement appelé ADO+) constitue la demigre technologie proposée dans ce cadre. Il est constitué d'un ensemble de classe positionné dans le namespace (équivalent d'un package en C) System.Data. Il est par conséquent utilisé par tous les langages de ce framework. ADO.NET propose done un modéle qui intégre les fonctionnolités de XML et de ADO C'est-d- dire quill offre des ensembles de classes, structures, interfaces, etc faisant partie intégrante du framework .NET et permettant un accés efficace et cohérent aux données. Les avantages ‘apportés par ADO.NET sont essentiellement: Y La montée en charge pose moins de problémes qu'auparavant. Par exemple il est vraiment aisé de dédoubler un serveur web en cas de puissance de traitement accrue. Ceci est en partie do & la possibilité de travailler en mode déconnecté avec ADO.NET et d'utiliser des caches en mémoire. Y utilisation abondante de XML (eXtensible Markup Language), une technologie portable et standardisée permettant des échanges de données indépendants des systemes et des plateformes. Y Les facilités offertes au niveau du développement. Le Framework .NET, et done les langages supportés, ont é8 pensés et concus pour intégrer la gestion des bases de données. Visual Studio intégre tout ce dont le développeur a besoin, auels que soient les types d'applications. Il. Les API et leurs utilisations 1. Terminologie ¥ API (Application Programming Interfaces) : une API est une bibliothéque de modéles de fonctions (interfaces) généralement de bas-niveau réalisant une tache bien précise. Dans un contexte orienté objet, une API se présente comme une bibliothéque de classes interfaces disposant de méthodes permettant de réaliser des téches bas-niveau. v API d'accés aux données : Une API d'acces aux données est une bibliothéque de fonctions ou d'objets permettant de faire les opérations d'accés aux bases de données, d'interrogation de ces bases (envoi des requétes) et de récupération de données & partir de ces bases. v API native d'accés aux données : Chaque SGBD posséde une API propriétaire tenant compte de ses spécificités et qui permet de faire les opérations daccés & cet SGBD. Une telle API est coppelée une API native. 2. ODBC (Open Data Base Connectivity) ODBC (Open Data Base Connectivity) est une API de fonctions (non orientée objet) unifiée d'accés aux données qui a pour objectif de permettre l'accés & n'importe quel SGBD sans nécessiter une connaissance des API natives. Support de Cours ADO.net i Lipro IUS 2023-2024 © eons Bernard NGUENANG sain SMOG Pont ODBC 3. Architecture d'un pont ODBC : Un pont ODBC est composé de trois couches : écrite avec 'API ODBC unifiée vers un format (écrit & I Y La premiére couche est une couche de réception des requétes adressées par les applications & un SGBD. Ces requétes sont spécifiées par les applications & l'aide de API ODBC. Y La deuxiéme couche est constituée d'un composont logiciel appelé gestionnaire de pilotes. Ce gestionnaire joue le réle diintermédicire qui va décider du choix du pilote ODBC approprié qui va prendre en charge la requéte adressée par l'application. Ce choix se base sur le type de la base de données interrogée. Le gestionnaire assure le chargement en mémoire et la libération du pilote sélectionné. Y Latroisiéme couche assure la communication entre le gestionnaire des pilotes et les pilotes CODEC. Cette communication est faite & travers des appels effectués par le gestionnaire, aux fonctions des pilotes ODBC. Ces fonctions font partie de I'API unifiée définie par le standard ODBC et utilisée par les développeurs des pilotes ODBC. Application U API ODBC Gestionnaire d@ilotes API Pilotes fournisseu Pilote | Pilote | Pilote | Pilote osc] opsc| opBc| ODBC scr san ‘Architecture d'un pont ODBC 4, Pilote ODBC te ODBC est un composant logiciel qui a pour objectif de traduire la requéte ide de I'API native) propre au SGBD interrogé. Tout SGBD qui veut étre accessible & travers ODBC doit fournir un pilote ODBC qui Support de Cours ADO.net ) Lipro WUS 2023-2024 4 © br Lois Bernard NGLENANG lui est spécifique. Ainsi par exemple, pour accéder & une base de données SQLServer ov Oracle & travers ODBC, il faut installer sur la machine sur laquelle tourne l'application le pilote ODBC pour SQL Server, respectivement pour Oracle. Pour voir sous Windows XP la liste des pilotes ODBC installés sur une macl Panneau de configuration —> Outils d'administration —> Sources de données ODBC I Faut aller & + 5. OLE DB: OLE DB (Open Linking and Embeding for DataBases) est une API unifiée d'accés aux données qui offre plus de possibilités que I'API ODBC. En effet ODBC permet l'accés aux bases de données relationnelles seulement. Avec OLE DB il est possible d'accéder & n'importe quelle source de données, relationnelle ou non (Systeme de fichiers, XML, Tableur, Messagerie,...). OLE DB utilise une collection d'obiets qui définit un modeéle différent de celui d’ODBC. Ce modéle slarticule autour des objets de base suivants : Data Source, Session, Command, Rowset. Aces objets de base s'ajoutent d'autres objets qui sont : Enumerator, Transaction, Error. AMOLEPS | Exemples de sources de données accessibles & travers un pont OLE DB 6. Avantages et inconvénients de l'utilisation des APIs unifiées. Sans utilisation d'une API unifiée, les programmeurs d'applications sont obligés d'oppendre différentes API natives pour faire des accés & différents SGBDs. Ceci alourdit la charge de travail des développeurs surtout dans les milieux professionnels of I'on est amené souvent & travailler sur des SGBD différents d'un projet & un autre. Lintérét des APIs unifiées dans ce cas est grand puisqu'elles vont alléger la charge de travail des développeurs. Les APIs unifiées sont toutefols moins rapides que les API natives & cause notamment des étapes de conversion de requétes qui sont nécessaires dans ce cas. Ill. Les modes de travail avec ADO.NET ADO.NET (ActiveX Database Object) est une novvelle API d'accés aux données proposée par Microsoft. Cette API permet aux applications développées en .NET de travailler avec différents types de sources de données. ¥ ADO.NET permet de trav ¥ ADO.NET permet de travailler d'une moniére complétement indépendante du type de la base de données. ler en mode connecté et en mode déconnecté. Support de Cours ADO.net) Lipro 1US 2023-2024 5 © br Lois Bernard NGLENANG ¥ ADO.NET permet I' & avec d'autres sources de données (relationnelle ov non telles que les systémes de fichiers, Active Directory, etc.). Cette interopérabilité est obtenve grace a la possibilité diimporter et d'exporter les données av format XML. Y_ADO.NET est fourni avec le FrameWork.NET 1. Le mode déconnecté Ce mode permet de travailler d'une maniére déconnectée de la source de données. Les étapes de travail avec ce mode se déroulent comme suit : Y Le client entre en communication avec le serveur de BD pour effectuer une requéte (généralement un SELECT). V Le serveur envoie en une seule fois le résultat de la requéte au client et la communication est ensuite coupée. Le client dispose donc d'une copie locale d'une partie de la BD serveur (qui correspond & sa requéte). Y Le client peut travailler sur la copie locale sans solliciter ni le serveur ni le réseau. Il peut modifier cette partie puis lenvoyer & nouveau au serveur & travers une nouvelle connexion & la BD. 2. Le mode connecté Ce mode permet de travailler d'une maniére connectée par rapport & la source de données. Les étapes de travail avec ce mode se déroulent comme suit Y Le client effectue une requéte auprés du serveur (Exemple un SELECT). Y Le serveur calcule le résultat de la requéte, le client et lui envoie le résultat de son SELECT ligne par ligne suite aux demandes de ce client (déplacement entre les enregistrements de son RecordSet). Y Le serveur doit savoir od il en est dans sa communication avec chaque client qui lui est connecté. 3. Comparaison des deux modes Y Le mode déconnecté est plus adapté & la maniére de travailler sur Internet. En effet sur Internet on ne peut pas connaitre quand est ce que le client (léger dans ce cas) décide de se déconnecter de la page d’accés aux données (II peut Ia laisser ouverte et passer @ d'autres pages). Maintenir plusieurs connexions ouvertes en continue avec la source de données constitue un frein & la capacité de montée en charge d'une application. (ce probléme peut toutefois étre évité en utilisant la propriété TimeOut lige & la variable de Session). Y Le mode déconnecté engendre une plus grande surcharge du réseau mais seulement ov moment de la transmission du résultat de la requéte ce qui risque de provoquer des courts blocages. Y Le mode connecté est préféré lorsque le jeu d'enregistrement & traiter est trop grand pour étre facilement transféré et stocké localement en mémoire. IV. Architecture générale de ADO.NET ADO.NET est une API composée d'une collection de classes interfaces répartie suivant un modéle en deux couches comme le montre la figure ci-dessous : Support de Cours ADO.net) Lipro WUS 2023-2024 6 © be ovis Bernard NANG Dataset [Connection Datardapter Transaction ‘SelectComm and DataTable DataRowCallection ‘Command’ InsertComm and [DataColumnCollection Parameters (UpdateCommand [ConstraintCollection [Deletecommand DataRelationCollection Database Les deux couches qui composent ce modéle sont + Y Une couche connectée qui comporte des classes managées qui font des accés physiques la bose de données. Ces classes constituent ce que ADO.NET appelle un fournisseur de données ou Data Provicer (Connection, Transaction, Command, Parameters, DataReader, DataAdapter,...). Y Une couche déconnectée qui comporte des classes qui ne sont pas en liaison directe avec les bases de données. Ces classes constituent une sorte de cache pour le stockage en local d'une partie des données de la base. 1. Le modéle de fournisseur de données Un fournisseur de données est une API qui permet de faire des accés physiques & la source de données. Cette API est composée de la collection de classes interfaces de la couche connectée de ADO.NET. Les quatre objets de cette couche sont présentés dans le tableau ci- dessous : Connection | Etablit une connexion & une source de données spécifique. ‘Command | Exécute une commande adressée a une source de données. Lit un flux & partir d'une source de données. Seule la lecture est possible. Elle est faite dans un sens unique (vers l'avant). DataAdapter| Remplit un DataSet & partir d'une source de données et met & jour cette dernigre & partir d'un DataSet. Acces classes de base viennent s'ajouter d'autres qui les complétent + Transaction _| Permet de lister les commandes dans une transaction. ‘CommandBuilder| Un assistant qui génére automatiquement les propriétés des commandes d'un DataAdapter. Support de Cours ADO.net i Lipro IUS 2023-20247 © eons Bernard NGUENANG Objet Description Définit les entrées, les sorties et retourne les valeurs des paramétres pour Parameter A : les commandes et les procédures stockées. Exception retournée lorsqu'une erreur est rencontrée au niveau de la source de données. Pour une erreur rencontrée au niveau du client le fournisseur de données intercepte une exception du FrameWork.NET. Error Expose les informations accompagnant un avertissement ou une erreur retouré(e) par une source de données. Les classes susmentionnges ne sont pas directement instanclables. Elles sont en effet définies dans le FrameWork .NET sous forme d'interfaces (car elles définissent un modéle]. Par exemple l'objet Connection est représenté par l'interface IDbConnection, l'objet DataAdpater est représenté par Interface IDbDataAdapter, l'objet Command est représenté par I'interface IDbCommand et l'objet DataReader est représenté par I'interface IDbDataReader. 2. Fournisseurs de données de ADO.NET Un fournisseur de données est une implémentation de I'API du modéle des fournisseurs (collection d'interfaces présentée dans le paragraphe précédent). ADO.NET propose quatre fourisseurs différents (quatre implémentations différentes) : Y Le fournisseur managé (OLEDB managed Provider) : Ce fournisseur est une implémentation du modéle des fournisseurs & l'aide de I'API de la technologie OLEDB proposée par Microsoft. Les classes qui représentent cette implémentation sont définies dans espace de noms System.Data. OleDb. Ce fournisseur permet aux applications écrites en .NET d'aceéder & la majorité des SGBDs et ce & travers le pont OLEDB. Y Le fournisseur managé ODBC (ODBC managed Provider) : Ce fournisseur est une implémentation du modale des fournisseurs & l'aide de I'API ODBC. II permet de ce fait daccéder & nlimporte quel SGBD possédant un pilote ODBC. Les classes composant ce fournisseur sont définies dans 'espace de noms System.Data,ODBC. Y Le fournisseur managé SQL Server (SQL Server managed Provider) est une implémentation du modéle des fournisseurs & l'aide de I'API native du SGBD SQL Server. Il permet d'accéder seulement av SGBD SQL Server (version 7 ou plus) pour leurs performances que celles obtenues avec le fournisseur OLEDB {ordce & l'accds natif bien sr). Les classes composant ce fournisseur sont définies dans espace de noms System.Data.SqlClient. Y Le fournisseur managé ORACLE (ORACLE managed Provider) : Ce fournisseur est une implémentation du modéle des fournisseurs & l'aide de I'API native du SGBD ORACLE. I ne peut étre utilisé done qu'avec ORACLE. Les classes composant ce fournisseur sont définies dans l'espace de noms System.Data.OracleClient. + Ce fournisseur Les deux premiers fournisseurs utilisent des ponts (OLEDB et ODBC) et offrent par conséquent un accés & un grand nombre de SGBD. Les deux demiers fournisseurs font respectivement des accés natifs aux SGBD SQL Server et Oracle. Ils offrent de meilleures performances pour ces deux SGBDs par rapport a celles obtenues & travers les ponts OLEDB et osc. Support de Cours ADO.net) Lipro WUS 2023-2024 © br Lois Bernard NGLENANG Il existe sur le marché des fournisseurs d'accés spécifiques & certains SGBD. C'est le cas de MYSQL qui propose un fournisseur dont les classes sont positionnées dans le namespace MySql.Data.MySqlClient. Remarai Tout SGBD qui se veut accessible d'une maniére native & travers une application .NET doit proposer sa propre implémentation du modéle des fournisseurs de données (son propre pilote ADO.NET). Remarque 2: Chaque classe qui implémente une interface faisant partie d'un fournisseur porte le nom de cette interface préfixé du nom du fournisseur auguel elle appartient. Le tableau suivant donne quelques exemples de noms de classes implémentées par les différents fournisseurs : Interface | OLE DB Provider SQL Provider | Oracle Provider Connection | OleDbConnection ‘SqlConnection | OracleConnection Command | OleDbCommand SqlCommand | OracleCommand DataReader | OleDbDataReader | ODBCDataReader | SQLDataReader | OracleDataReader DataAdapter | OleDbDataAdapter | ODBCDataAdapter | SqlDataAdapter | OracleDataAdapter Foumisseur Aces naif (API SOL Serve) SQL-Server APL Fournisseur Aci nati APE ORACLE) ADO.NET ORACLE ant ounpg | Foumisseur Pont OLEDB oLEDB fase | Foumisseur |_| at ovac : ol Pont ~_ ‘opBc _— ‘Les diferentes APIs impkémentunt ls fournisseurs de données de ADO.NET La suite de ce cours présente les différentes étapes de l'accés & une base de données @ l'aide du fournisseur OLEDB Provider. L'accés & l'aide des autres fournisseurs se fait de la méme maniére puisque tous les fournisseurs implémentent le méme modéle. 3. Connexion a une base de données La connexion & une base de données en ADO.NET se fait & l'aide de interface Connection. Le fournisseur OLEDB implémente cette interface @ I'side de la classe OleDbConnection. Espace de nom de OleDbConnectio: System.Data.OleDB ; Support de Cours ADO.net) Lipro 1US 2023-2024 9 © br Lois Bernard NGLENANG Constructeurs = OLeDbConnection() Crée un objet de connexion non initialisé, OleDbConnection(string Cre un objet de connexion tout en spéecifiant une chaine de connectionString) connexion. Ce constructeur décortique automatiquement la chaine pour remplir les propriétés de l'objet de connexion. Principales propriétés de OleDbConnection : I s'agit d'une chatne de caractéres au format bien particulier qui est passée ou constructeur de l'objet de connexion. Ce constructeur la place dans lattribut courant et la décortique ConnectionString | string | pour initioliser les autres attributs de la classe. Il est & noter que certains attributs sont en lecture seule et ne peuvent étre initialisée en dehors du constructeur de la classe et donc & travers la chaine de connexion. Durée en secondes durant laquelle T'établissement d'une connexion au serveur de BD est tenté. Si pendant ce laps temps ConnectionTimeOut| int | Iai connexion échove alors une erreur est signalée. Une valeur nulle indique une attente infinie (& éviter). Par défaut la valeur est de 15 secondes. DataBase string _ | Nom de la base de données (a utiliser avec SQL Server). DataSource string | Nom de la source de données (8 utiliser dons le cas de MSACCESS ov autres). Password ‘Mot de passe pour accéder & la base Provider string _| Identificateur du type de la BD Principales méthodes de OleDbConnection : Open() Ouverture explicite de la base. Une exception est générée en cas déchec de l'ouverture. void Close() Fermeture explicite de la base de données. ‘Spécification de la valeur de la propriété DataSource La valeur de la propriété DataSource désigne le chemin de la source de données. Ce chemin peut étre : ¥ Un chemin absoly. (Exemple : data source = C:\repertoire\\MaBase.mdb) ¥ Un chemin relatif si la source se trouve dans le méme dossier que l'exécutable de l'application ou si elle se trouve dans un sous dossier de celui-ci. (Exemple pour un méme dossier : data source = MaBase.mdb) ¥ Un chemin réseau si la source se trouve sur une autre machine du réseau local. (Exemple: data source = \\machine\Lecteur\...\ MaBose.mdb) ‘Support de Cours ADO.net / Lipro TUS 2023-2024 10 © eons Bernard NGUENANG Spécification de la valeur de la propriété Provi Cette propriété désigne le type de la source de données & laquelle est fait l'occés. Le tableau ci-dessous donne quelques exemples de valeurs utilisées pour un certain nombre de SGBD. ‘SGBD Valeur Access Provider = Microsoft.Jet. OLEDB.4.0 SGl Server _ | Provider =SQLOLEDB S400 Provider = IBMA40O ; DB2 Provider = DB2OLEDB ; Fox Pro Provider = vipOLEDB ; Oracle Provider MSDAORA 4. Exemple d'utilisation de l'objet de connexion : using system ran = new OleDbConnect ion (stecnn) + cnn.open { ‘ede 1a connexion V Notte ici Le code dtinterrogation de 1 Suite & la création de l'objet de connexion, 'établissement effectif de la liaison avec la base est amorcé par l'appel & la méthode Open. Une fois la connexion ouverte, il devient possible d'adresser & la base des requétes de différents types (insertion, sélection, ...). Enfin, lorsque I'interrogation se termine, il faut fermer la connexion avec la méthode Close. Remarque : utilisation de @ devant la chaine de connexion Par défaut le caractére '\' introduit dans les chaines un caractére de formatage. Pour ne pas le considérer ainsi, il faut faire précéder la chaine de @. Sinon lorsquil s'agit de spécifier un chemin, il faut utiliser \\ ou lieu de \. Dans ce cas la chaiine de connexion devient : "Provider=Microsoft.Jet.OleDb.4.0 ; Data Source = C:\\Repertoire\\MaBase.mdb’ Support de Cours ADO.net |) Lipro 1US 2023-2024 11 © br Lois Bernard NGLENANG Chapitre 2 : Travailler en mode connecté interrogation de la base de données suppression, de mise & jour ou de sélection de toutes ces opérations passe par interface Com interface par la classe OleDbCommand. 1. La classe OleDbCommand. Cette classe se trouve dans I'Espace de nom Constructeurs de OleDbCommand : Interrogation de la base de données en mode connecté peut se faire dans un objectif d'insertion, de données. En mode connecté, la réalisation de mand. Le fournisseur OLEDB implémente cette + System.Data.OleDB ; Constructeur Description (OleDbCommand) Crée un objet de commande non initialisé OleDbCommand (string salstr) Crée une commande et lui passe une requéte SQL. ‘OleDbCommand (string sqlstr, OleDbConnection cnn) Crée une commande et lui passe une requéte SQL plus un objet de connexion. Principales propriétés de OleDbCommand : Propriété Type Description CommandType enum CommandType Indique le type de la commande. Trois valeurs sont possibles dans ce cadre : v Text ie que la commande est une requéte SQL. ¥ StoredProcedure : signifie que la commande représente un appel & une procédure stockée. ¥ TableDirect : signifie que la commande est une requéte de sélection du contenu entier d'une table. CommandText string Contient le texte de la commande. La maniére d'interprétation de ce texte dépend de la valeur de la propriété CommandType. ¥ Si CommandType Text alors CommandText représente le texte de la requéte SQL. ¥ Si CommandType=StoredProcedure alors CommandText contient le nom de lo procédure stockée qui sera appelée. ¥ Si CommandType=TableDirect alors CommandText contient le nom de la table dont le contenu sera renvoyé. Cette commande est équivalente & une requéte SLECT * appliquée la table en question. ‘Support de Cours ADO.net {i Lipro TUS 2023-2024 12 © pr Louis Bernard NGUENANG Propriété Type Description CommandTimeOut Nombre de secondes dattente avant qu'une int commande ne soit déclarée en erreur. La valeur par défaut est de 30 sec. Connection OleDbConnection sert & spéci Vobjet connexion associé & la commande. II la source de données & laquelle est destinge la commande. Parameters ‘OleDbParameterCollection | Liste des paramétres utilisés par la commande. Par défaut cette collection est vide. Principales méthodes de OleDbCommand : Les méthodes les plus util sées de la classe OleDbCommand sont celles qui permettent d'exécuter les commandes. Trois méthodes sont proposées a cet effet : ‘Méthode Description int ExecuteNonQuery() Elle exécute la commande spécifiée dans CommandText. Dans ce cas la commande doit étre une commande d'insertion, de mise a jour ov de suppression (INSERT, UPDATE, DELETE). La méthode retourne le nombre de lignes sur lesquelles a porté la commande (nombre de lignes insérées, supprimées, mises & jour). La méthode ExecuteNonQuery ne peut pas exécuter une commande de sélection (SELECT). Elle retourne -1 dans ce cas. object ExecuteScalar() Cette méthode est essentiellement utilisée pour exécuter une commande qui renvoie une valeur scalaire (Exemple ELECT COUNT" ... ). D'une maniére générale, ExecuteScalar renvoie sous la forme d'une valeur de type object la premiére colonne de la premiére ligne de la collection d'enregistrements représentant le résultat de la requéte. Elle retourne une référence nulle si ce résultat est vide. OleDbDataReader ExecuteReader() Cette méthode est utilisée lorsque la commande renvoie une collection d'enregistrements (Généralement le résultat d'une requéte de sélection). La collection d'enregistrements renvoyée est placée dans un objet de type OleDbDataReader (implémentation de interface DataReader). Cet objet permet de faire le parcours des enregistrements un par un, en lecture seule et dans un seul sens (vers evant). 2. L'objet OleDbParameter Un objet Parameter représente un paramétre d'une commande. Il est & noter qu'un objet ‘Command peut comporter une collection de paramétres stockée dans sa propriété Parameters. Pour le fournisseur OleDb les paramatres sont créés & l'aide de la classe OleDbParameter. Propriété Type Description ParameterName| string Nom du paramétre, ‘Support de Cours ADO.net |! Lipro TUS 2023-2024 13 © de Louis Bernard NGUENANG Propriété Type Description Direction enum ParameterDirection Input : le paramatre est un paramétre d'entrée. Output : le paramétre est un paramétre de sortie, InputOutput : le poramétre est un paramétre d'entrée et de sortie. Y ReturnValve : le paramatre représente la valeur de retour (généralement d'une procédure stockée). Eee OleDbType OleDbType Le type du paramétre. IsNullable Bool Indique si le paramétre accepte la valeur null ov non (par défaut false). Precision Byte ‘Obtient ou définit le nombre maximal de chiffres utilisés pour représenter la propriété Value. (la valeur par défaut est 0, elle signifie que cest le fournisseur qui détermine la précision) Scale Object Obtient ou définit le nombre de décimales (chiffres aprés la virgule) appliqué & la résolution de Value. La propriété Scale est utilisse uniquement pour les paramétres d'entrée décimaux et numériques. (la valeur par défaut est 0, elle signifie que cest le fournisseur qui détermine la valeur de cette propriété). Obtient ou définit la taille maximale, en octets, des données figurant dans la colonne. Elle est utilise essentiellement pour les chatines de caractéres. Pour les types de toille fixe cette valeur est tout simplement ignorée. SourceColumn string ‘Obtient ov définit le nom de la colonne source mappée & DataSet et utilisée pour charger et retourner Value. ‘SourceVersion DataRowVersion ‘Obtient ov définit la version de la ligne é uiiliser lors du chargement de Value. Value object it la valeur du paramétre. Les constructeurs les plus util public OleDbParameter(}; Construit un objet paraméire non public OleDbParameter(string porameterName, OleDbType oledbType, int size, string sourceColumn); Construit- un objet paramétre avec lisation de quelques propriétés. Ce constructeur est souvent utilisé pour créer des paramétres devant passer des nouvelles valeurs & la requéte stockée dans un objet Command. public OleDbParameter(string porameterName, Construit un objet paramétre avec initialisotion de ensemble des OleDbType oleDbType, int size, PorameterDirection direction, bool isNullable, byte precision, byte scale, string sreColumn, DataRowVersion sreVersion, object value); propriétés. Ce constructeur est souvent utilisé pour créer des paramétres devant passer des anciennes valeurs d'une li @ la requéte stockée dans un objet Command. Support de Cours ADO.net |) Lipro TUS 2023-2024 4 © pr Louis Bernard NGUENANG 3. Utilisation des espaces réservées dans les requétes IL est possible de faire passer des paramatres au texte SQL d'une requéte et ce en utilisant des espaces réservés introduits par le caractére "2" Les espaces réservés ne sont pas acceptés par tous les SGBD (Certains SGBDs demandent des paramétres nommés comme SQL Server par exemple). ¥ Les espaces réservés d'une requéte prennent leurs valeurs & partir de la collection des paramétres de l'objet Command qui représente cette requéte. La correspondance entre les espaces et les paramétres se fait sur la base de l'ordre d'apparition des "2" dans le texte de la requéte et de l'ordre d'ajout des paramétres & la collection Parameters de l'objet Command. le premier paramétre ajouté & la collection correspond au premier espace réservé, le deuxiéme poramétre au deuxiéme espace réservé, etc. ¥ Av moment de I'exécution de la commande, les espaces réservés de la requéte seront remplacés par le contenu des propriétés Value des objets paramétres qui leurs correspondent. Exe Si on considare le texte de la requéte suivante : "INSERT INTO NomTable Values (?, ?, ?)". Lobjet command basé sur cette requéte peut faire passer & cette demiére des arguments qui prendront la place des espaces réservés. Ces arguments doivent provenir de la collection Parameters de cet objet Command. Il. Récupération des enregistrements en mode connecté 1. L'objet OleDbDataReader Les requétes de sélection retournent généralement une collection d'enregistrements. En mode connecté, la gestion de cette collection se fait & l'aide de l'objet OleDbDataReader. Cet objet : ¥ n'est pas créé é l'aide d'un constructeur mais par appel & la méthode ExecuteReader de l'objet Command. ¥ Foit un balayage du résultat de la requéte de sélection enregistrement par enregistrement, d'une maniére séquentielle, du début vers la fin et uniquement dans ce sens. ¥ Référence & un instant donné un seul enregistrement de la collection d'enregistrement renvoyée par la requéte de sélection. ¥ Ne permet de faire que des accés en lecture aux données récupérées. ¥ Assure le transfert de chaque enregistrement du serveur de données vers le client juste au moment de la demande de lecture de cet enregistrement. L'Espace de noms de OleDbDataReader : System.Data.OleDB Principales propriétés de OleDbDataReade: Propriété Type Description FieldCount int Nombre de champs dans lenregistrement renvoyé {nombre de colonnes dans la ligne). Support de Cours ADO.net |) Lipro WS 2023-2024 15 © br Lois Bernard NGLENANG Indexeur d'accés aux champs de 'enregistrement courant lem a de l'objet OleDbDataReader. II peut étre indexé sur le numéro du champ ou sur le nom du champ. Principales méthodes de OleDbDataReader : ‘Méthode Description void Close() Ferme objet OleDbDataReader. string GetName(int n) Renvoie le nom du n#"* champ. Renvoie la position d'un champ dont le nom est passé comme int GetOrdinal(string) ‘argument. Une exception est générée si le nom du champ n'est pas connu. bool IsDBNull(int N) Renvoie true si le champ en n®™ position contient une valeur nulle. Lit Ia ligne suivante dans la table représentant la collection d'enregistrements. Read renvoie true si une ligne a belie effectivement pu étre lve. Elle renvoie false quand la fin du résultat du SELECT est atteinte. bool NextResult() Permet de passer directement & Venregistrement suivant (ligne suivante de la table). Renvoie true si cette ligne existe. Remplit le tableau en argument avec le contenu des différentes colonnes d'une ligne (le contenu de 'enregistrement référencé par le DataReader). Elle renvoie le nombre de cellules remplies dans ce tableau. Si le tableau contient un nombre n de cellules inférieur au nombre de champs alors seules les n cellules sont remplies. int GetValues(Object[]) 2. Exemples de code d'interrogation de base de données La base de données interrogé dans ces exemples s'appelle Biblio et contient une table Ouvrage. Cette base est créée avec MS-ACCESS. Champ | Inventaire Titre Auteur | Année dédition Type Entier Chane Chane Entier Ouvrage Exemple 1 : requéte renvoyant une valeur (Calcul du nombre d’ouvrages) Le calcul du nombre d'ouvrages se fait & l'aide d'une requéte qui retourne une valeur de type scalaire (entier). C'est la méthode ExecuteScalar de l'objet Command qui doit alors étre utilisée = using System.Datar using System.Data-Ole NoOuvrages () 1/ Création de la chaine de connexion string Strcnn ~ "Provider ~ Microsoft .Jet.OLEDB.4.0; Data Source ~ C:\ADO\ Biblio.ndb"; Support de Cours ADO.net |) Lipro IUS 2023-2024 \6 © br Lois Bernard NGLENANG OlepeConnection cnn = new OLeDbConnection (StzCan) + 11 owverture de 1a connexion cenn.open ()¢ J Création du texte de 1a commande steing Strsql = "SELECT Count (+) FROM Owveag J Cxéation de Lobjet Command Glepeconmand cnd~new Olenhconmand (Strsql, cnn) 2 11 Bxécution de 1a conmande int n =(int) ond. executescalar ()? 11 Fermeture de 1a connexion fenn.cios0()7 ' static void Main() 1 console.Writenine(*le résultat est *+caleulMbouveages (117 Console ReadLine()? Exemple 2 : Requéte d'insertion dans une table (Ajout d'un ouvrage) insertion d'un enregistrement dans une table se fait généralement & l'aide de la méthode ExecuteNonQuery de l'objet Command. using system: using syston.Datar using System.Data.OleDb; i static int CalculNbouvrages () (+++) static void AjoutOuvrage () 1 // Création de 1a chatne de connexion string Strcnn = @*Provider = Microsoft Jet-OLEDB.4.0; Data Source Datakccess +\ADO\Bib1 io.mab"s 11 Création de Lobjet de connexion OleDdconnection cnn = new OledbConnection (Stecnn)# 1/ ouverture de 1a connexion enn .open (= 11 Texte de 1a conmande string StrSql = "INSERT INTO Ouvrage VALUES (12, ‘Programmation C*, "Didier Le Blanct, #10/12/20058) "7 // Création d@ Ltobjet Command OleDeCommand end-new OleDbCommand (Strsal,, cnn) + // Exécution de 1a commande cond. ExecuteNonguery (17 11 Fermature da 1a connexion enn.cloze()? } static void Main(y 1 Console.WelteLine ("le résultat est “4calculNbouvrages ()) Ajoutouvrage (7 console.WriteLina("le résultat est “#CalculNbouvrages()) + Console-ReadLina()+ My ‘Support de Cours ADO.net i Lipro TUS 2023-2024 17 © eons Bernard NGUENANG Exemple 3 : Requéte de suppression et de mise & jour Les requétes de suppression et de mise @ jour s'exécutent de la méme maniére que la requéte diinsertion (& l'aide de la méthode ExecuteNonQuery). II suffit tout simplement de changer le texte de la requéte. Exemple de texte d'une commande de mise 4 jour : string StrSql = "UPDATE Ouvrage SET Titre = ‘Programmation Java’ WHERE Inventaire = 12"; Exemple de string StrSql ssion : ELETE FROM Ouvrage WHERE Inventaire = 12’ Exemple 4 : Requéte de sélection Uexécution d'une requéte de sélection se fait & l'aide de la méthode ExecuteReader de l'objet ‘Command. La collection d'enregistrements renvoyée est placée dans un objet DataReader. C'est @ travers cet objet que se fait la consultation de ces enregistrements. (static void ConsultationOuyrage() // Création de la chaine de connexion (e*Provider ~ Hicrosoft.Jet-OLEDS.1.0; Data Source ~ C:\ApO\BibLio.mdb' ation de l'objet de connexion dLeDpconnect ion cnn = new OLedbconnection (SteCnn) + // ouverture de 1a connexion cenn.open ()¢ / Texte de 1a commande string Strsqi = "SELECT * FROM Ouvrag: OleDpCommand end-new OleDbCommand (Stesal, enn) + 1/ Bxecation de 1a commande et récupération des données dans un Datakea’ OleDpbataReader rd = omd.ExecuteReader |) // Parcours des enregistrenents renvoyés string si Lr teat=nuaay [while (rd.Read()) {os = (eteing)ra["r a mains sultationduvrage() Console.ReadLine(} Support de Cours ADO.net Lipro TUS 2023-2024 18 © eons Bernard NGUENANG 3, Requéte paramétrée ‘On considére dans ce qui suit la requéte de sélection de livres présentée au paragraphe précédent. Supposons que l'on veuille sélectionner seulement les livres dont l'année d'édition est ultérieure & une année saisie par l'utilisateur. Le texte de la requéte doit dans ce cas étre construit d'une moniére dynamique. Deux solutions se présentent & cet égard. Solution 1 : Construction de la requéte par concaténation. Dans cette solution, les données saisies par l'utilisateur sont converties en chaines de caractéres et introduites dons le texte de la requéte par concaténation comme le montre l'exemple suivant Exemple string Strnn = "Provider = Uicrosoft Jet OLEDB.4.07 Data Source =C:\Data\BLlbLo.mdb"s OleDeConnection enn = new OledbConnection (Stecnn) 7 fenn.open () 7 isie de Lannée de référence Console.Writeline ("Donner I'année de référence") + Année~1it32. Parse (Console.ReadLine()) // Création da texte de 1a requéte par concatenation String StrSql ~ "SELECT * FROM Ouvrage WHERE [Année d'édition)>"‘Année.Tostring ()7 17 Création d'une commande basée sur la requéte de sélection OleDbCommand end-new OleDbCommand (SteSql coin) 7 OlepboataReader rd ~ cnd.ExecutaReader () Solution 2 : Utilisation des objets Parameters UADO.NET propose une alternative permettant d'automatiser le passage de paramétres aux requétes. Cette alternative se base sur 'utilisation des espaces réservés et des objets Parameters. Uexemple suivant illustre l'utilisation de cette technique Exemple string Strnn = @*Provider = Uicrosoft.Jet -OLEDB.4.07 Data Source =C:\Data\BilbLo.mdb"s OleDeConnect ion cnn = new OledbConnect Lon (SteCan) 7 cenn.open () 7 isie de Ltannés de ré6 Console.WritoLine ("Donner Iannée de référence") Année=Tnt32, Parse (Console.ReadLine())7 11 Toxto do lar 1 de faire pasa string strsql ~ "SELECT * JSto avoc utilisation d'un espace résorvé pormottant (OM Ouveage WERE (Année d*édition}>? uw OLeDeConmand end=new OleDbCommand ( ation d'un objet command basé sur la requéte de sélection Sql, cnn) 5 wu fn d'un objet Paraneter qui va servir pour faire passer Itannée. Fit de passor l'année a 1a propriété Value de l'objet Paranstor mnoter Par ~ new OleDbParanater conmande end. Paraneters.Add (Par) 11 Bout du parand re 4 la Liste des parame 11 Bxéeution de OLeDbDataReades -onrande ‘ond. ExecuteReader ()7 ‘Support de Cours ADO.net |) Lipro TUS 2023-2024 19 Chapitre 3 : Travailler en mode déconnecté |. Architecture du modéle déconnecté Une application déconnectée ne posséde aucune connexion permanente @ sa source de données. Le modéle de telles applications se base sur deux composants qui sont le DataAdapter et le DataSet. DataSet ‘Lecture des. Renplsage ; Pas DataAdapter [2 DaTable Source de données Taste des Mise jour comes LV ¥ Le composant DataSet représente une sorte de cache de données. II stocke en local une partie de la base de données qui correspond au résultat d'une requéte de sélection adressée par application & la source de données. Ce résultat est stocké dans une table (DataTable) du DataSet. II est & noter que le DataSet peut comporter plusieurs tables créées chacune par une requéte de sélection. ¥ Le composant DataAdapter jove le réle diintermédiaire entre la source de données et le DataSet. Dans ce cadre ce composant permet de + * Récupérer le résultat correspondant & une requéte de sélection & partir de la source de données et remplit avec, le DataSet. “ Assurer la mise & jour de la source de données dans le cas ot les données locales du DataSet ont été modifiées par l'utilisateur. Remarque : La coy locale des données stockée par un DataSet se trouve sur la machine cliente du serveur de base de données. Dans les applications Windows, il s'agit généralement de la machine de lutiisateur (cas des clients lourds). Pour les applications Web ce client est généralement le serveur qui stocke les pages d'accés aux données (Serveurs Web). Les internautes & travers leurs navigateurs (clients légers) ne peuvent recevoir en effet que du HTML ou du javaScript. Il. Les objets d'adaptation de données (DataAdapter) Y Le DataAdapter jove le réle d'un pont entre une source de données et une table du DataSet Un DataAdapter fait des accés physiques & Ia source de données chose qui le rend dépendant des fournisseurs de données. Il est spécifié en ADO.NET par interface IDataAdapter. Cette interface posséde plusieurs implémentations proposées par les différents fournisseurs de données. Ces implémentations sont : OleDbDataAdopter, ODBCDataAdapter, SqlDataAdapter, OracleDataAdapter. Support de Cours ADO.net |) Lipro 1US 2023-2024 20 © br Lois Bernard NGLENANG Un objet DataAdapter posséde deux méthodes importantes qui lui permettent d'assurer léchange de données entre la source et le DataSet. * La méthode Fill : qui permet de remplir une table du DataSet & l'aide du résultat d'une requéte SELECT adressée & la source. * La méthode Update : qui permet de mettre & jour la source de données dans le cas od des modifications ont été apportées sur le DataSet. 1. Propriétés d’un DataAdapter Un DataAdapter posséde quatre propriétés de type Command qui représentent les actions que peut assurer I'adaptateur entre une source de données et un DataSet. Ces commandes son Objet Command Signification Contient une instruction SQL SELECT permettant de sélectionner des SelectCommand | onnées & partir de la base et de les placer dans un DataSet ImertCommand | centient une instruction SQL INSERT permettant d'insérer physiquement insertomman dans la base de données les lignes nouvellement ajoutées au DataSet. rence Contient une instruction SQL UPDATE permettant d'appliquer & la base de données les modifications apportées sur les lignes du DataSet. Contient une instruction SQL DELETE permettant de supprimer DeleteCommand | physiquement de la base de données les lignes supprimées dans le Datas. ¥ appel de la méthode Fill du DataAdapter engendre l'exécution automatique de l'objet SelectCommand. Le DataSet est alors rempli avec le résultat de cette commande, VY Vappel de la méthode Update engendre I'exécution des objets InsertCommand, UpdateCommand et Del Command. 2. L'adaptateur OleDbDataAdapter DataAdapter est un modéle. Les classes réellement instonciables par les programmeurs sont celles qui implémentent ce modéle. Ce paragraphe présente 'implémentation OleDbDataAdapter proposée par le fournisseur OleDb. Espace de noms: System.Data.OleDb Constructeurs : Constructeurs OleDbDataAdapter() Crée un objet DataAdapter non Crée un objet DataAdapter & partir d'un objet OleDbCommand (il s'agit d'une commande de sélection. Cette commande est offectée & la propriété SelectCommand de l'adaptateur). OleDbDataAdapter( OleDbCommand) OleDbDataAdapter{ string Crée un objet DataAdapter & partir d'une requéte de ClouseSelect, string sélection qui sera utilisée par Fill, et d'une chaine de ChainedeConnexion connexion indiquant la source de données. Dans ce cas, ) n'est pas nécessaire d’établir la connexion a l'aide d'un objet OleDbConnection. Ce dernier est automatiquement créée. Support de Cours ADO.net |) Lipro 1US 2023-2024 21 © br Lois Bernard NGLENANG Constructeurs OleDbDataAdapter( string ClauseSelect, OleDbConnection Cnn ) Méme effet que le constructeur précédent. Mais ici objet de connexion doit étre explicitement créé et passé au constructeur. Principales propriétés : Les principaux attributs sont : OleDbSelectCommand, OleDbinsertCommand, OleDbUpdateCommand, présentées au paragraphe Pri pales méthodes : OleDbDeleteCommand. Dont les interfaces viennent d'étre précédent. Méthode Signification int Fill(DataSet) Remplit un DataSet passé comme argument avec le résultat de la requéte de sélection passée au constructeur. Fill renvoie le nombre de lignes regues du serveur. Une table est ainsi ajoutée au DataSet. La table porte par défaut le nom “Table”. Aucune table n'est cependant ajoutée au DataSet si ce nombre de lignes est égal & zéro. int Fill( DataSet ‘Mame effet que la version précédente mais en donnant la DS, string possibilité de spécifier explicitement un nom & la table ajoutée au NomTable DataSet. Si une table qui porte le méme nom existe déja dans le ) DataSet alors la méthode Fill remplit cette table et aucune nouvelle table n'est créée. int Fill{ DataSet eee Comme la fonction précédente mais en remplissont le DataSet avec ee NbRecords lignes & partir de la ligne numéro StartRecord. (Les lignes string NomTable provenant du SELECT). ) int FillDataTable) Insére directement le résultat du SELECT dans un objet table en mémoire. Engendre I'exécution des commandes INSERT, UPDATE et DELETE du DataAdapter afin de répercuter dans la source de données les mises & jour effectuées dans le DataSet. Update retourne le nombre de int Update(DataSet DS) | lignes mises & jour. Dans le cas oi Ia table de la source nest pas trouvée une exception de type SystemException est levée. Dans le cas de I'échec d'une commande (insert,...) une exception de type DbConcurrencyException est levée. int Update(DataTable DT) Engendre l'exécution des commandes INSERT, UPDATE et DELETE du DataAdapter afin de répercuter dans la source de données les mises jour effectuées dans le DataTable. Update retourne le nombre de lignes mises & jour. Dans le cas od la table de la source n'est pas trouvée une exception de type SystemException est levée. Dans le cas de I'échec d'une commande (insert,...) une exception de type DbConcurrencyException est levée. Support de Cours ADO.net |) Lipro WS 2023-2024 22 © br Lois Bernard NGLENANG Ill. L'objet DataSet Un DataSet représente une copie locale d'une partie de la base de données. Les données de cette copie locale peuvent étre consultées et modifies sans avoir besoin & accéder au serveur de données. 1. Modéle objet d'un DataSet Le modéle objet d'un DataSet est donné par la figure suivante : Dalaet Table ¥ Un objet DataSet comporte généralement une collection de tables (objets DataTable) et une collection de relations (objets DataRelation). ¥ Chaque table comporte une collection de colonnes (objets DataColumn), une collection de lignes (objets DataRow} et une collection de contraintes (objets Constraint). ¥ Les tables peuvent étre créées et ajoutées au DataSet d'une maniére explicite ov par appel ‘aux méthodes Fill de plusieurs adaptateurs de données. Chaque adaptateur de données soccupe généralement de la gestion (remplissage et mise & jour) d'une table du Dataset. DataTable Data Source ‘Support de Cours ADO.net | Lipro TUS 2023-2024 23 © br tons Berard NGUENAN ¥ Un objet DataSet est complétement déconnecté de la source de données. II est indépendant des différents fournisseurs de données (implémentation unique pour les différents fournisseurs OleDb, SQL Server, Oracle,...)- ¥ En .NET, les données d'un DataSet sont écrites en XML et le schéma est écrit en XSD (XML ‘Schema Definition Language). Un DataSet peut ainsi importer et exporter d'une maniére native les données au format XML. I peut également étre utilisé pour échanger des données entre différentes sources de données. Espace de noms : System.Dato Constructeurs : DataSet() Crée un objet DataSet. DataSet(string) [[Crée un objet DataSet en lui donnant un nom. | Principales propriétés publiques = DataSetName string Nom donné av DataSet non initiolisé. Indique si les contraintes doivent tre verifies ov , non lors des opérations de mise & jour effectuées ae oeeaee eel dans le DataSet. {true signifie quil \ a vérification, Cest la valeur par défaut pour cette propriété). Relations DataRelationCollection | Collection de relations (objets de type DataRelation) Tables DataTableCollection | Collection de tables (objets de type DataTable) Principales méthodes : void Clear() Efface le contenu du DataSet en supprimant toutes les lignes des tables. DataSet Clone() Copie la structure du DataSet (tables, relations, contraintes) sans copier les données. DataSet Copy() Copie & la fois la structure et les données du DataSet. string GetXmi() Retourne la représentation XML des données stockées dans le Dataset. string GetXmlSchema() | Retourne le schéma XSD de la représentation des données du Dataset. void Merge(DataSet) Fusionne le DataSet passé en argument et son schéma avec le DataSet courant. void Merge(DataTable) | Fusionne la table passée en argument et son schéma dans le DataSet courant. Exemple 1: ‘On considére la base de données Biblio comportant la table Ouvrage donnée comme suit Champ | Inventaire | Titre ‘Année d'édition Type Entier Chaine Entier Ouvrage ‘Support de Cours ADO.net | Lipro TUS 2023-2024 24 © eons Bernard NGUENANG L'exemple suivant montre la création d'un DataSet qui récupére en local la liste des ouvrages de la base Biblio. Cette liste est placée dans un objet DataTable nommé Ouvrage. 17 Création de 1a chaine de connexion string Strénn = @*Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Data\siblio.mdb"; jation do Ltebjet de connexion ection Can = new OlebsConnection (strcnn)¢ 17 Ouverture de 1a connexion fenn.open ()¢ ui sera stocks dans 1a propriété SelectCommand de L'adaptateur string "FROM Ouveage"? {i Texte de la req StrSelect = "SELE do Lad: tateur de données 1 Rompliss ba.FILL (bs, 2. L'objet DataTable ¥ objet DataTable est une représentation en mémoire locale (cété client) d'une table de base de données. Une table dans un DataSet comporte un schéma et des données. ¥ Le schéma est défini par les colonnes de la table (collection d'objets de type DataColumn) et par les contraintes appliquées aux colonnes. Ces contraintes concernent la spécification de la dé primaire (objet UniqueConstraint) et de la clé étrangére (objet ForeignKeyConstraint). ¥ Les données d'une table sont stockées dans des lignes (collection d'objets de type DataRow). Espace de noms : System.Data Constructeurs : DataTable() Crée une table sans lui donner de nom. DataTable(string) Crée une table en lui donnant un nom. Principales prop TableName string Nom donné & la table. En lecture seule, cette propriété permet de récupérer Dataset Dataset le DataSet cuquel appartient la table. En lecture seule. Cette propriété donne la collection del ChildRelations | DataRelationCollection | relations (objets DataRelation) de type enfant de lq table. En lecture seule. Cette propriété donne la collection del ParentRelations | DataRelationCollection | relations (objets DataRelation) de type parent de la| table. s publiques : Support de Cours ADO.net |i Lipro IUS 2023-2024 25 © eons Bernard NGUENAN Columns DataColumnsCollection En lecture seule. Cette propriété donne Ia collection del colonnes (objets de type DataColumn) de la table. En lecture seule. Cette propriété donne la collection de: Rows DataRowCollection i 20< (objets de type DataRow) de la table. Constraints Contrincolecion | Et e

Vous aimerez peut-être aussi