Vous êtes sur la page 1sur 12

Introduction à ADO.

NET
 

Introduction à 
ADO.NET
 

Développement Informatique 

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 1 / 12 
Introduction à ADO.NET

I.  Introduction (le .NET) 
Dans la plupart des applications informatiques actuelles, il est indispensable
d’accé der en lecture ou en mise à jour à des bases de donné es, locales ou
distantes.
.NET est une plate‐forme de dé veloppement d’applications graphiques, multi
langages (Visual Basic .NET, C#...)
Visual Studio .NET possè de un modè le objet appelé ADO.NET (ActiveX Data
Object .NET), qui permet de se connecter à de nombreuses bases de donné es
relationnelles. Le mê me modè le est utilisable dans des applications client‐
serveur classiques é crites en VB .NET C# et dans des applications Web basé es
sur ASP .NET (Active Server Page .NET).

II.  Le modèle objet d’ADO .NET 
ADO.NET (ActiveX Data Objects.Net) est un ensemble de classes d’accè s aux
donné es comprises dans le Framework .NET. Il permet de gé rer de façon
simplifié e et organisé e des donné es stocké es en base (relationnelle ou non),
dans des fichiers XML (eXtensible Markup Language) etc…
ADO .NET permet de travailler en deux modes :
- « mode connecté » : le poste client maintient une « connexion » réseau avec le
serveur, et lui envoie des requêtes pour lire ou écrire directement dans la base de
données distante ;

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 2 / 12 
Introduction à ADO.NET

- « mode déconnecté » : le poste client effectue une copie locale des données en
mémoire, dans un DataSet (groupe de données). Le DataSet contient des tables
qui permettent de copier et d’organiser les données sur le poste client.

Les fournisseurs de données ADO.NET: « Data Provider »
ADO.NET nous offre 4 fournisseurs de donné es « Data Provider » pour accé der
aux donné es (SQL Server, Oracle, ODBC et OLE DB).
Toutes les classes permettant d’utiliser ces fournisseurs se trouvent dans
l’espace de nom System.Data. Il existe quatre types de fournisseurs :

Fournisseur Description

SQL Server Les classes de ce fournisseur se trouvent dans l’espace de


nom System.Data.SqlClient, chaque nom de ces classes
est pré fixé par Sql.

Oracle Les classes de ce fournisseur se trouvent dans l’espace de


nom System.Data.OracleClient, chaque nom de ces
classes est pré fixé par Oracle. Il permet simplement de se
connecter à une source de donné es Oracle.

OLE DB Il a é té conçu dans le but de remplacer ODBC, de ce fait il


Object Linking permet l'accè s à des bases de donné es ou des sources de
donné es qui n'utilisent pas un processeur de requê tes SQL.
and Embedding
Database Les classes de ce fournisseur se trouvent dans l’espace de
nom System.Data.OleDb, chaques noms de ces classes
sont pré fixé s par OleDb.

ODBC Les classes de ce fournisseur se trouvent dans l’espace de


Open Database nom System.Data.Obdc, chaque nom de ces classes est
Connectivity pré fixé par Obdc.



Remarque : SQL Server et Oracle sont tous deux des fournisseurs de données
managés. C'est‐à‐dire qu’ils sont optimisés pour certains types de bases de
données. 

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 3 / 12 
Introduction à ADO.NET

Les principales parties qui composent une instance de


ADO.NET.

II.  Les objets du Fournisseur de données 
(mode connecté) 
Le tableau suivant pré sente les quatre principaux objets qui composent un
fournisseur de donné es .NET Framework.
Ces objets travaillent en mode connecté

Object Description

Connection : Ouvre une connexion vers une source de données spécifiques.

Exécute une commande sur une source de données : requêtes SQL


Command
d’interrogation ou de modification, avec ou sans paramètres
Lit un flux de données à partir d'une source de données en mode
DataReader
connecté. Le mode d'accès est en lecture seule avec un curseur en
TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 4 / 12 
Introduction à ADO.NET

avant seulement.
Il permet de remplir un DataSet, grâce à sa requête SELECT, et
DataAdapter éventuellement de répercuter des mises à jour du DataSet vers la
base de données via les requêtes UPDATE, INSERT et DELETE.

III.  Les objets du DataSet (mode déconnecté) 
Le DataSet est un objet qui ré side en mé moire et qui correspond à une copie
locale des donné es d'une base. Il contient les tables d'une base, mais aussi les
relations entre ces diffé rentes tables et les contraintes appliqué es aux donné es.

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 5 / 12 
Introduction à ADO.NET

IV.  L’accès aux données en mode connecté 
1. L’objet Connection (SqlConnection)
Un objet SqlConnection repré sente une connexion à la base de donné es SQL
Server. Il a donc pour rô le d’é tablir une connexion à la base de donné es.

Quelques propriétés et méthodes de l’objet SqlConnection

Constructeurs

SqlConnection() Initialise une nouvelle instance de la classe SqlConnection. 
SqlConnection(String) Initialise une nouvelle instance de la classe SqlConnection en passant 
un paramètre contenant une chaîne de connexion. 

Propriétés

ConnectionString Obtient  ou  définit  la  chaîne  utilisée  pour  ouvrir  une  base  de  données 
SQL Server.
Database Obtient le nom de la base de données active ou de la base de données à 
utiliser une fois la connexion ouverte.
DataSource Obtient le nom de l'instance de SQL Server à laquelle se connecter. 
State Indique l'état de la SqlConnection pendant la dernière opération réseau 
exécutée sur la connexion. Voir l’enumération ConnectionState 

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 6 / 12 
Introduction à ADO.NET

Méthodes

Close Ferme la connexion à la base de données. 
CreateCommand Crée et retourne un objet SqlCommand associé à SqlConnection. 
Open Ouvre  une  connexion  de  base  de  données  avec  les  paramètres  de 
propriété spécifiés par ConnectionString.

2. L’objet Command (SqlCommand)

‐ Une commande doit toujours ê tre relié e à une connexion, soit lors de son
instanciation, soit en affectant sa proprié té Connection. Il faut bien sû r ouvrir
cette connexion, avant d’exé cuter la commande.

‐ Il existe trois types de commandes, qui permettent soit d’exé cuter une
procé dure stocké e, soit de ré cupé rer le contenu d’une table entiè re, soit
d’exé cuter une requê te SQL. Le type d’une commande est fixé par la proprié té
CommandType :
 procédure stockée ‐> StoredProcedure
 table entière ‐> TableDirect
 requête (par défaut) ‐> Text

Quelques propriétés et méthodes de l’objet SqlCommand

Constructeurs

SqlCommand() Initialise une nouvelle instance de la classe SqlCommand.


SqlCommand(String) Initialise une nouvelle instance de la classe SqlCommand avec
le texte de la requê te en paramè tre.
SqlCommand(String, Initialise une nouvelle instance de la classe SqlCommand avec
SqlConnection) le texte de la requê te et SqlConnection.

Propriétés

CommandText Obtient ou dé finit l'instruction Transact‐SQL, le nom de table


ou la procé dure stocké e à exé cuter au niveau de la source de
donné es.
CommandType Obtient ou dé finit une valeur indiquant la maniè re dont la
proprié té CommandText doit ê tre interpré té e.
Connection Obtient ou dé finit le SqlConnection utilisé par cette instance de
SqlCommand.
Parameters Obtient l'é lé ment SqlParameterCollection.

Méthodes

CreateParameter Cré e une nouvelle instance d'un objet SqlParameter


ExecuteNonQuery Exé cute une instruction Transact‐SQL sur la connexion et
retourne le nombre de lignes affecté es.

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 7 / 12 
Introduction à ADO.NET

ExecuteReader() Envoie CommandText à Connection et gé nè re SqlDataReader.


ExecuteScalar Exé cute la requê te et retourne la premiè re colonne de la
premiè re ligne du jeu de ré sultats retourné par la requê te. Les
colonnes ou lignes supplé mentaires sont ignoré es.
ExecuteXmlReader Envoie CommandText à Connection et gé nè re un objet
XmlReader.

3. L’objet DataReader (SqlDataReader)
L'objet DataReader permet de ré cupé rer d'une source de donné es un flux en
lecture seule en avant seulement (read only, forward only). Il ré sulte de
l'exé cution de la mé thode ExecuteReader sur un objet Command.

L'objet DataReader ne stocke en mé moire qu'une seule ligne à la fois, permettant
ainsi d'augmenter les performances d'une application et d'en ré duire la charge.

Par dé faut, un DataReader charge une ligne entiè re en mé moire à chaque appel
de la mé thode Read. Il est possible d'accé der aux valeurs de colonnes soit par
leurs noms soit par leurs ré fé rences ordinales. Une solution plus performante
est proposé e permettant d'accé der aux valeurs dans leurs types de donné es
natifs (GetInt32, GetDouble, GetString .). Par exemple si la premiè re colonne de
la ligne indicé e par 0 est de type int, alors il est possible de la ré cupé rer à l'aide
de la mé thode GetInt32 de l'objet DataReader.

Quelques propriétés et méthodes de l’objet SqlDataReader

Propriétés

Connection Obtient le SqlConnection associé au SqlDataReader.


HasRows Obtient une valeur qui indique si SqlDataReader contient une
ou plusieurs lignes.

Méthodes

Close Ferme l'objet SqlDataReader.


GetDecimal Obtient la valeur de la colonne spé cifié e sous la forme d'un objet Decimal.
… ….
GetString Obtient la valeur de la colonne spé cifié e sous la forme d'une chaı̂ne.
Read Avance SqlDataReader jusqu'à l'enregistrement suivant.


3. Exemples de code

Considé rons la base de donné es suivante :

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 8 / 12 
Introduction à ADO.NET



a. Extraction de données à partir d’une table

//information de connexion 
string connectionString =@"Data Source=TOSHIBA‐PC\SQLEXPRESS; 
Initial Catalog=BD_Pays1;Integrated Security=true"; 
 
//requete pour avoir la liste des pays. 
string queryString ="SELECT * FROM countries;"; 
 
// Instanciation d'un objet SqlConnection en utilisant  
//une chaine de connexion. 
SqlConnection connection = new 
SqlConnection(connectionString); 
 
//Creation d'un objet SqlCommand pour avoir la liste des pays. 
SqlCommand command = new SqlCommand(queryString, connection); 
 
try 

  connection.Open();//ouvzrture de la connexion 
  SqlDataReader reader =command.ExecuteReader(); //lecture de 
données 
  while (reader.Read())//tant qu'il y a des enregistrements à 
lire 
  { 
    //affichage des données 
    Console.WriteLine("\t{0}\t{1}\t{2}", 
    reader[0],//accès au premier champ de la table 
    reader["country_name"],//accès au champ country_name 
    reader.GetInt32(2)// accès au troisième champ de la table 
avec conversion 
    ); 
  } 
TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 9 / 12 
Introduction à ADO.NET

  reader.Close(); 
  connection.Close(); 
  }catch (Exception ex){ 
    Console.WriteLine(ex.Message); 
  } 
  Console.ReadLine();


b. Insertion dans une table
Insertion d’un enregistrement dans la table countries :
//information de connexion 
string connectionString =@"Data Source=TOSHIBA‐PC\SQLEXPRESS; 
Initial Catalog=BD_Pays1;Integrated Security=true"; 
 
// requete pour inserer un nouveau pays. 
string queryString ="INSERT INTO countries " 
+"VALUES ('p1','Pays 1',4);"; 
 
// Instanciation d'un objet SqlConnection en utilisant  
//une chaine de connexion. 
SqlConnection connection = new 
SqlConnection(connectionString); 
         
// Creation d'un objet SqlCommand pour insérer les données. 
SqlCommand command = new SqlCommand(queryString, connection); 
 
try 
 { 
   connection.Open();//ouverture de la connexion 
   int n=command.ExecuteNonQuery(); //execution de la commande 
   //n contient le nombre d’enregistrements affectés 
   Console.WriteLine(n.ToString()); 
   connection.Close(); 
 }catch (Exception ex){ 
   Console.WriteLine(ex.Message); 
 } 
Console.ReadLine();


c. Modification de données

//information de connexion 
string connectionString =@"Data Source=TOSHIBA‐PC\SQLEXPRESS; 
Initial Catalog=BD_Pays1;Integrated Security=true"; 
 

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 10 / 12 
Introduction à ADO.NET

// requete pour modifier un pays. 
string queryString = "UPDATE [dbo].[countries]" 
+"SET [country_id] ='p9',[country_name] = 'Pays9999' " 
+"WHERE [country_id] ='p1'"; 
 
// Instanciation d'un objet SqlConnection en utilisant  
//une chaine de connexion. 
SqlConnection connection = new 
SqlConnection(connectionString); 
         
// Creation d'un objet SqlCommand pour modifier les données. 
SqlCommand command = connection.CreateCommand(); 
command.CommandText=queryString; 
             
try 

 connection.Open();//ouverture de la connexion 
 int n=command.ExecuteNonQuery(); //execution de la commande 
 Console.WriteLine(n.ToString()); 
 connection.Close(); 
}catch (Exception ex) 

 Console.WriteLine(ex.Message); 

Console.ReadLine();

d. Suppression de données

….
…..
string queryString = "DELETE FROM [dbo].[countries] " 
         +"WHERE [country_id] ='p1'";

…..
Console.ReadLine();





   

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 11 / 12 
Introduction à ADO.NET

TDI 2014/2015 ISTA GESTION FES  HAJJOUJI A.mounim    Page 12 / 12