Académique Documents
Professionnel Documents
Culture Documents
Programmation Client-serveur C#
Filière : TS2 DI
Prof : ZBAIR
ADO.Net
• Pour avoir accès à partir de C# aux Bases de Données il
faut utiliser la technologie ADO.NET (ActiveX Data Objects)
• C’est la couche d’accès aux BD, càd le SGBD de C#
• C’est un ensemble de classes, de méthodes et
d’évènements permettant de récupérer et de manipuler
des données.
• Elle permet un accès à différentes sources de données par
l’intermédiaire de fournisseurs OLE DB qui traduisent les
requêtes dans le langage du système de base de données
réel.
• La grande force de cette technologie est qu’elle permet une
manipulation identique quelque soit la source de données
(hormis les paramètres de connexion).
Prof : ZBAIR
ADO.Net
Applications C#
Fournisseurs OLE DB
OLE DB Oracle SQL
BD BD … BD SQL
ACCESS Oracle Server
Prof : ZBAIR
Fournisseurs d’accès
• Plusieurs fournisseurs existent pour les
différents SGBD existant sur le marché.
Source de données Fournisseur OLE DB
Microsoft Access OLEDB
SQL Server version 7 ou SQL
supérieure
Oracle version 8.1.7 ou Oracle
supérieure
ODBC ODBC
MySQL OLEDB
Prof : ZBAIR
Espace de nom
Espace de nom Fournisseur OLE DB
•System.Data
La technologie ADO.Net est basée sur un
Compatible avec tous les
ensemble de classes existant dans des espaces
fournisseurs
de nom relatif chacun à un type deOLEDB
System.Data.OleDB base de
données
System.Data.SqlClient SQL
• Au début de l’application, il faut donc
System.Data.OracleClient
importer ces espaces de nom avec Oracle Imports
Imports Espace_nom
System.Data.ODBC ODBC
Prof : ZBAIR
Mode connecté Vs. Mode déconnecté
Prof : ZBAIR
Mode connecté
Prof : ZBAIR
Mode déconnecté
Prof : ZBAIR
DataSet – Composants
13
Etablir une connexion avec une BD
• La propriété state peut avoir les valeurs suivantes :
– Closed : fermée
– Connecting : En cours de connexion
– Open : ouverte
– Executing : En exécuttion
– Fetching : Extraction de données
– Broken : Interrompue
• Parmi les méthodes des classes de connexion, on cite :
Méthode Description
Open Ouvre la connexion
Close Ferme la connexion et libère les ressources
CreateCommand Crée un objet Commande
• Après avoir créé l’objet Connexion il faut l’ouvrir avec Open
MyConnexion.open()
Prof : ZBAIR
Travailler avec un DataReader
Prof : ZBAIR
Travailler avec un DataReader
• Pour créer un objet Command, il faut instancier la classe
correspondante au fournisseur utilisé
Fournisseur Classe
ODBC OdbcCommand
OLEDB OleDbCommand
SQL Server SqlCommand
• Parmi les propriétés de ces classes :
Propriétés Description
CommandText Texte SQL de la requête à exécuter
Connection Connexion liée à la commande
CommandTimeOut Nombre de secondes pour l’exécution de
la commande
Prof : ZBAIR
Travailler avec un DataReader
• Parmi les méthodes des classes de commande
Méthode Description
Cancel Annule l’exécution de la commande
ExecuteReader Exécute la requête et retourne un objet de type
DataReader
ExecuteScalar Exécute la requête et retourne une valeur
unitaire (utilisé avec count, avg, etc.)
ExecuteNonQuery Exécute une commande ne retournant pas de
ligne (Insert, Update, Delete, etc.)
Prof : ZBAIR
Travailler avec un DataReader
Exemple
1ère méthode
OleDbCommand Mycommand =
MyConnexion.CreateCommand()
MyCommand.CommandText = "SELECT NOM FROM
QUESTIONS" Création de l’objet Commande à
partir de l’objet connection et sa
2ème méthode méthode CreateCommand
OleDbCommand Mycommand== New
OleDbCommand()
MyCommand.Connection = MyConnexion
MyCommand.CommandText = "SELECT
CréationNOM FROM
de l’objet QUESTION"
Commande en
spécifiant dans la propriété connection
l’objet Connection concerné
Prof : ZBAIR
Travailler avec un DataReader
• L’objet DataReader permet de lire les enregistrements issus
d’une requête.
• Pour créer un objet DataReader, il faut tout d’abord instancier
la classe correspondante au fournisseur utilisé.
Fournisseur Classe
ODBC OdbcDataReader
OLEDB OleDbDataReader
SQL Server SqlDataReader
Exemple
OleDbDataReader dr=
MyCommand.ExecuteReader()
Prof : ZBAIR
Travailler avec un DataReader
• Parmi les méthodes de cet objet
Méthode Description
Close Ferme le DataReader
Read Avance au prochain enregistrement, retourne
True s’il existe d’autres enregistrements et False
s’il n’y en a plus
GetValue(i) Retourne la valeur du champ sans type à
l’indice « i »
GetString, GetDouble, Retourne la valeur du champ typé à l’indice « i »
GetBoolean, Getint32, …
GetType(i) Retourne le type du champ à l’indice « i »
GetName(i) Retourne le nom du champ à l’indice « i »
GetOrdinal (nom) Retourne l’indice du champ donné en
paramètre
FieldCount Retourne le nombre de colonnes du DataReader
Prof : ZBAIR
Travailler avec un DataReader
• L’objet DataReader est lu séquentiellement de la 1ère ligne à la
dernière. C’est la méthode Read qui permet d’avancer à la
ligne suivante
• Une fois le traitement terminé, il faut fermer la connexion :
myConnexion.close()
Prof : ZBAIR
Pour compter des enregistrements
• Avec ExecuteScalar de l'objet Command on peut récupérer les
résultats d'une requête SQL qui contient une instruction
COUNT (comptage) AVG (moyenne) MIN (valeur minimum)
MAX (valeur maximum) SUM (somme)
Exemple
Mycommand.CommandText = "SELECT COUNT(*) FROM
QUESTIONS"
MyConnexion.Open()
int iResultat = Mycommand.ExecuteScalar()
Permet de compter le nombre de questions
Prof : ZBAIR
Pour mettre à jour une BD
• Avec ExecuteNonQuery de l'objet Command on peut mettre à
jour (INSERT, DELETE, UPDATE ou ajout d’une table) une BD
sans retourner de données
Exemple
Mycommand.CommandText = "insert into QUESTION values
(...)"
MyConnexion.Open()
Mycommand.ExecuteNonQuery()
Permet de mettre à jour la BD
Prof : ZBAIR