Vous êtes sur la page 1sur 23

MIAGE KSAR EL KEBIR

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#

Objets de Données ActiveX (ADO)

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é

• Deux modes existent pour l’utilisation des


données dans une application :
1. Mode Connecté : l’application client a un accès
direct à la source de données
2. Mode déconnecté : il est possible de travailler
sur des données sans avoir un accès direct et
permanent à la base.

Prof : ZBAIR
Mode connecté

• Les objets utilisés dans ce mode sont :


1. Connexion : permet d’établir une connexion avec
la source de données
2. Command : cet objet permet d’exécuter des
traitements ou de modifier / lire des données
sur la source, c’est lui qui contiendra la requête
SQL
3. DataReader : permet de parcourir, en lecture
seule, l’ensemble des enregistrements récupérés
par la requête. Il est créé par l’objet Command

Prof : ZBAIR
Mode déconnecté

• Dans ce mode, le traitement des données se fait en 3


étapes :
1. Récupération des données à partir de la source
2. Modification des données en mode déconnecté
3. Intégration des données modifiées à la source avec
éventuellement résolution des conflits (contraintes
d’intégrité)
• Les objets utilisés dans ce mode sont :
1. Connexion : permet d’établir la connexion
2. DataAdapter : contenant la requête Select. Il sert de
liaison entre la source de données et l’objet dataSet
3. DataSet : a la structure d’une base de données mais en
local. Il peut être rempli par l’objet DataAdapter ou bien
créé indépendamment d’une source de données
Prof : ZBAIR
Mode déconnecté

Prof : ZBAIR
DataSet – Composants

• Pour utiliser un DataSet, il faut importer


l’espace de nom System.data
• Un DataSet peut être composé de :
1. DataTable
2. DataRow
3. DataColumn
4. DataRelation
5. Constraint
6. DataView
Prof : ZBAIR
Etablir une connexion avec une BD
• Afin d’établir une connexion avec la BD, il faut créer un objet
connexion en instanciant la classe Connection spécifique au
fournisseur d’accès de votre BD
Fournisseur OLE DB Classe
ODBC OdbcConnection
OLEDB OleDbConnection
SQL Server SqlConnection

• Parmi les propriétés de ces classes


Propriétés Description
ConnectionString Chaîne utilisée pour la connexion
contenant le fournisseur OLE DB et le
chemin d’accès de la BD
State Etat de la connexion
Prof : ZBAIR
Etablir une connexion avec une BD
• Parmi les paramètres de la chaîne de connexion ConnectionString
Paramètres Description

Provider le fournisseur d’accès


Data Source l’emplacement de la base
ConnectionTimeOut délai en secondes maximum pour
l’établissement de la connexion
• La liste des providers possibles selon la source de données
Source de données Fournisseur Chaîne de connexion
Microsoft Access 2003 OLEDB Microsoft.Jet.OLEDB.4.0
Microsoft Access 2007 OLEDB Microsoft.ACE.OLEDB.12.0
SQL Server SQL SQLOLEDB.1
Oracle Oracle OraOLEDB.oracle
ODBC ODBC MSDASQL
MySQL OLEDB MySQLProv 12
Etablir une connexion avec une BD
Exemple
OleDbConnection cn=new
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=File.accdb;");

Permet d’établir une connexion avec la BD de


nom ′′File.accdb′ qui est une BD Access 2012"

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

• Avec un objet DataReader on extrait les données en


lecture seule : une requête SQL charge le dataReader.
• Pour gérer un DataReader on a besoin d’un objet
Command.
• Dans ce cas, il faut suivre les étapes suivantes :
– Créer un objet Connection
– Ouvrir la connexion
– Créer un objet Command
– Exécuter la méthode ExecuteReader pour créer l’objet
DataReader
– Parcourir les enregistrements par la méthode read.

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

Vous aimerez peut-être aussi