You are on page 1of 14

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

www.cours-ofppt.com

Intgrer les accs aux donnes dans le client en


mode connect

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION


SECTEUR NTIC

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

www.cours-ofppt.com

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION


SECTEUR NTIC

Intgrer les accs aux donnes dans le client en mode connect

www.cours-ofppt.com
Sommaire
1.
2.
3.
4.
5.
6.
7.
8.
9.

Introduction.....................................................................................2
Que nous apporte ADO .NET ?............................................................2
Choix d'un fournisseur de donnes .NET...............................................3
Le modle objet ADO .NET.................................................................4
L'objet Connection............................................................................5
L'objet Command..............................................................................6
L'objet DataReader............................................................................7
Comment appeler une procdure stocke ?..........................................9
Conclusion.....................................................................................11

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
1 - 14

Intgrer les accs aux donnes dans le client en mode connect

1.Introduction
Avec .NET, Microsoft propose sa dernire technologie d'accs aux donnes ADO .Net.
C'est un ensemble de classes permettant de rcuprer et de manipuler des donnes et
qui fait partie intgrante de la nouvelle plate-forme appele .Net Framework.
Si vous tes habitus aux dveloppements utilisant les ADO, vous allez constater que ces
nouvelles classes sont diffrentes tant dans la syntaxe que dans la dmarche de
conception propose.
Nous allons prsenter dans cet article les nouveauts ADO.Net, le modle ADO.Net ainsi
que les objets Connection, Command et DataReader en prcisant quand ce sera
ncessaire, les quivalences avec les ADO.

2.Que nous apporte ADO .NET ?


Avec ADO .NET Microsoft s'est efforc de rpondre efficacement aux besoins des
applications Web en apportant les nouveauts suivantes :
Une architecture plus optimise :
Avec .Net, de nouveaux fournisseurs de donnes voient le jour. Certains fonctionnent en
mode natif, supprimant des couches intermdiaires entre l'application et sa source de
donnes. ADO .Net pourra ainsi tre plus rapide accdant directement la source de
donnes. Par exemple le .NET Framework comprend le fournisseur de donnes SQL
Server .NET en mode natif via le namespace System.Data.SqlClient.
Un meilleur support du mode dconnect :
Le design de ADO .Net rpond aux exigences des modles de dveloppement des
applications actuelles. Dans une application Web, le maintien d'une connexion SGBD
ouverte doit tre la plus courte possible, car le nombre de connexions ouvertes vers une
source de donnes peut constituer un frein la capacit de monte en charge d'une
application. Le modle ADO dans son temps, avait volu afin de rpondre ce besoin
par un Recordset dconnect. Aujourd'hui Microsoft encourage le mode dconnect et
propose des classes spcialises supportant les deux modes : connect (via l'objet
DataReader) et dconnect (via l'objet DataSet).
Un meilleur support de XML :
Le XML est utilis au sein du Framework .NET comme le standard de description et de
persistance des donnes. Dans ADO .Net il est utilis comme le format de transmission
universel de donnes.

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
2 - 14

Intgrer les accs aux donnes dans le client en mode connect

3.Choix d'un fournisseur de donnes .NET


Pour pouvoir faire appel aux classes proposes par ADO .Net il est ncessaire d'inclure
une rfrence l'espace de noms correspondant. Vous pouvez soit inclure l'espace
System.Data soit inclure des classes de cet espace comme System.Data.OleDb ou
System.Data.SqlClient ; tout dpend de la source de donnes utilise.
'Inclusion d'un namespace
Imports System.Data
Imports System.Data.SqlClient
Plusieurs espaces de noms sont disponibles avec ADO .Net parmi lesquels :
Espace de nom

Description
Fournisseur de donnes spcifiques pour SQLServer V7 ou
System.Data.SqlClient
suprieure
Propose la gestion de sources de donnes accdes via un
System.Data.OleDb
driver OleDb
Propose la gestion de sources de donnes accdes via un
System.Data.Odbc
driver Odbc
Propose un accs des sources de donnes Oracle (v8.1.7 ou
System.Data.OracleClient
suprieure)
Propose des classes permettant d'accder la fonctionnalit
System.Data.XML
XML sous SQL Server 2000 ou suprieur
Propose des classes pour des types de donnes spcifiques
System.Data.SQLTypes
Microsoft SQL Server
Dans la suite de notre article, nous utiliserons le fournisseur de donnes SqlClient et
accderons une base SQLServer 2000 fournie en exemple nomme "Northwind".

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
3 - 14

Intgrer les accs aux donnes dans le client en mode connect

4.Le modle objet ADO .NET

ADO .Net comprend quelques objets similaires aux ADO (comme les objets Connection et
Command) dont la syntaxe a volu. L'objet Recordset n'existe plus, il a t remplac par
les objets DataReader et DataSet.
Regardons de plus prs chacun de ces objets.
Objet
Connection
Command

Description
Ouvre une connexion vers une source de donnes spcifique
Excute une commande sur une source de donnes
Lit un flux de donnes partir d'une source de donnes en mode connect.
DataReader
Le mode d'accs est en lecture seule avec un curseur en avant seulement.
Reprsente un ensemble de donnes en mode dconnect. Il peut tre
DataSet
constitu de plusieurs tables ainsi que des relations et contraintes existant
entre elles.
Remplit un DataSet et rpercute les mises jour dans la source de
DataAdapter
donnes.

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
4 - 14

Intgrer les accs aux donnes dans le client en mode connect

5.L'objet Connection
La connectivit SQLServer 2000 est assure par l'objet SqlConnection de l'espace de
noms System.Data.SqlClient. Le framework .Net propose ainsi des objets de connexion
diffrents en fonction du type de fournisseur de donnes choisi. Par exemple vous devrez
utiliser l'objet OleDbConnection si votre fournisseur est un fournisseur OleDb.La
connectivit SQLServer 2000 est assure par l'objet SqlConnection de l'espace de noms
System.Data.SqlClient. Le framework .Net propose ainsi des objets de connexion
diffrents en fonction du type de fournisseur de donnes choisi. Par exemple vous devrez
utiliser l'objet OleDbConnection si votre fournisseur est un fournisseur OleDb.
L'ouverture d'une connexion est ralise par la mthode Open et la fermeture par la
mthode Close.
' Exemple de gestion d'une connexion
Imports System
Imports System.Data.SqlClient
Imports System.IO
namespace ExempleAdoNetVBnet
public class SQLConnexion
public static void Main()
Dim strConnexion As String = "Data Source=localhost; Integrated
Security=SSPI;" & "Initial Catalog=Northwind"
try
Dim oConnection As SqlConnection = New SqlConnection(strConnexion)
oConnection.Open()
Console.WriteLine("Etat de la connexion : " & oConnection.State)
oConnection.Close()
catch e as Exception
Console.WriteLine("L'erreur suivante a t rencontre :" & e.Message)
End Try
End Sub
End Class
End Namespace

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
5 - 14

Intgrer les accs aux donnes dans le client en mode connect

6.L'objet Command
Une fois la connexion vers une base de donnes effectue, vous pouvez excuter une
requte et rcuprer son rsultat en utilisant l'objet Command. Contrairement au
fonctionnement des ADO o il tait possible d'excuter une requte sans utiliser l'objet
Command, vous devez dsormais systmatiquement le faire.
La cration d'un objet Command ncessite l'instanciation d'un objet SqlCommand. Cet
objet expose diffrentes mthodes Execute utiliser selon le rsultat attendu :

La mthode ExecuteReader peut tre utilise pour rcuprer un jeu


d'enregistrements et retourne un objet DataReader.
La mthode ExecuteScalar rcupre une valeur unitaire.
La mthode ExecuteNonQuery excute une commande ne retournant pas de
lignes.

'Exemple d'utilisation d'un objet Command


Imports System
Imports System.Data.SqlClient
Imports System.IO
Namespace ExempleAdoNetVBNET
Public Class CommandeSQL
Public Shared Sub Main()
Dim strConnexion As String = "Data Source=localhost; Integrated
Security=SSPI;" + "Initial Catalog=Northwind"
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')"
Try
Dim oConnection As New SqlConnection(strConnexion)
Dim oCommand As New SqlCommand(strRequete, oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
oConnection.Close()
Catch e As Exception
Console.WriteLine(("L'erreur suivante a t rencontre :" + e.Message))
End Try
End Sub 'Main
End Class 'CommandeSQL
End Namespace 'ExempleAdoNetVBNET

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
6 - 14

Intgrer les accs aux donnes dans le client en mode connect

7.L'objet DataReader
L'objet DataReader permet de rcuprer d'une source de donnes un flux en lecture seule
en avant seulement (read only, forward only). Il rsulte de l'excution de la mthode
ExecuteReader sur un objet Command.
L'objet DataReader ne stocke en mmoire qu'une seule ligne la fois, permettant ainsi
d'augmenter les performances d'une application et d'en rduire la charge.
Il est recommand d'utiliser cet objet si :
Vous n'avez pas besoin de raliser un cache des donnes
Vous traitez un jeu d'enregistrements trop important pour tre stock en mmoire
Vous souhaitez accder des donnes rapidement en lecture seule en avant
seulement
Comme l'objet DataReader a t conu pour accder aux donnes selon un mode
connect, il ne peut tre transmis entre diffrents tiers applicatifs ce que ralisait un
Recordset dconnect.
Par dfaut, un DataReader charge une ligne entire en mmoire chaque appel de la
mthode Read. Il est possible d'accder aux valeurs de colonnes soit par leurs noms soit
par leurs rfrences ordinales. Une solution plus performante est propose permettant
d'accder aux valeurs dans leurs types de donnes natifs (GetInt32, GetDouble,
GetString .). Par exemple si la premire colonne de la ligne indice par 0 est de type int,
alors il est possible de la rcuprer l'aide de la mthode GetInt32 de l'objet
DataReader.
Dim iColonne As Integer
iColonne = oDataReader.GetInt32(0)
La mthode Close ferme un objet DataReader. Prcisons que si l'objet Command utilis
contient des paramtres en sortie ou des valeurs de retours, ils ne pourront tre
rcuprs qu'a l'issue de la fermeture du DataReader.
Pour augmenter les performances, il est parfois ncessaire de soumettre plusieurs
requtes la fois. L'objet DataReader rpond ce besoin avec la mthode NextResult
permettant de passer d'un jeu d'enregistrement un autre. Pour les habitus des ADO,
cette mthode est quivalente au NextRecordset.
Aprs vous avoir prsent les principales mthodes de l'objet DataReader, regardons plus
prcisment leurs mise en ouvre l'aide d'un exemple d'extraction de donnes.
' Exemple d'extraction de donnes avec l'objet DataReader
Imports System
Imports System.Data.SqlClient
Imports System.IO

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
7 - 14

Intgrer les accs aux donnes dans le client en mode connect


Namespace ExempleAdoNetVBNET
Public Class CommandeSQL
Public Shared Sub Main()
Dim strConnexion As String = "Data Source=localhost; Integrated
Security=SSPI;" + "Initial Catalog=Northwind"
Dim strRequete As String = "SELECT CategoryID, CategoryName FROM
Categories;" + "SELECT EmployeeID, LastName FROM Employees"
Try
Dim oConnection As New SqlConnection(strConnexion)
Dim oCommand As New SqlCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlDataReader = oCommand.ExecuteReader()
Do
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}",
oReader.GetName(0), oReader.GetName(1))
While oReader.Read()
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab +
"{1}", oReader.GetInt32(0), oReader.GetString(1))
End While
Loop While oReader.NextResult()
oReader.Close()
oConnection.Close()
Catch e As Exception
Console.WriteLine(("L'erreur suivante a t rencontre :" + e.Message))
End Try
End Sub 'Main
End Class 'CommandeSQL
End Namespace 'ExempleAdoNetVBNET
Ce qui donne l'excution le rsultat suivant :

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
8 - 14

Intgrer les accs aux donnes dans le client en mode connect

8.Comment appeler une procdure stocke ?


Voyons maintenant comment appeler une procdure stocke en utilisant les objets
Command et la collection Parameters.
Les procdures stockes sont un ensemble d'ordres SQL compils sur un moteur SGBD.
Grce aux procdures stockes, il est possible de centraliser l'ensemble du code SQL de
votre application un seul endroit, ce qui en facile la maintenance. D'autre part, une
procdure stocke est plus performante qu'une requte dynamique dont le plan
d'excution et la compilation doivent tre effectus par le moteur SGBD avant toute
excution.
L'utilisation de la collection Parameters de l'objet Command permet de dfinir
explicitement les paramtres en entre et en sortie ainsi que le code retour d'une
procdure stocke.
Tout d'abord informons l'objet Command du type de commande traiter via la proprit
CommandType ; et donnons lui la valeur StoredProcedure.
'Dfinition du type de commande
oCmd.CommandType = CommandType.StoredProcedure

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
9 - 14

Intgrer les accs aux donnes dans le client en mode connect


Dfinissons ensuite chacun des paramtres en utilisant la mthode Add de la collection
Parameters (dont l'un des prototypes est dcrit ci-dessous).
Description
Type
Exemple
Nom du paramtre
string
@nom
Type de donnes
SqlDbType SqlDbType.Char
Taille de la colonne
int
25
nom de la colonne source string
nom
' Cration d'un paramtre en entre
Dim oParam As SqlParameter = oCmd.Parameters.Add("@nom", SqlDbType.Char, 25,
Nom)
oParam.Value = "John"
' Cration d'un paramtre retour
Dim oParam As SqlParameter = oCmd.Parameters.Add("ReturnValue", SqlDbType.Int)
oParam.ParameterDirection = ParameterDirection.ReturnValue
Prcisons :

qu'il est ncessaire d'affecter la proprit Value de l'objet Parameter une valeur
pour les paramtres qui le ncessitent.
qu'il faut dcrire explicitement le type de paramtres via la proprit
ParameterDirection de l'objet Parameter (sauf pour les paramtres en entre).
Celle-ci peut prendre l'une des valeurs suivantes : Input, InputOutput, Output ou
ReturnValue.

Regardons un exemple implmentant l'excution de la procdure stocke


"GetCustomerOrders" de la base "Northwind".
' Exemple d'appel une procedure stocke
Imports System
Imports System.Data.SqlClient
Imports System.Data
Imports System.IO
Namespace ExempleAdoNetVBNET
Public Class SQLProcStock
Public Shared Sub Main()
Dim strConnexion As String = "Data Source=localhost; Integrated
Security=SSPI;" + "Initial Catalog=Northwind"
Dim strProcedureStockee As String = "GetCustomerOrders"
Try
Dim oConnection As New SqlConnection(strConnexion)
Dim oCommand As New SqlCommand(strProcedureStockee, oConnection)
oCommand.CommandType = CommandType.StoredProcedure
Dim oParam As SqlParameter =
oCommand.Parameters.Add("@CustomerName", SqlDbType.NVarChar, 50,

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
10 - 14

Intgrer les accs aux donnes dans le client en mode connect


"CustomerName")
oParam.Value = "France restauration"
oConnection.Open()
Dim oReader As SqlDataReader = oCommand.ExecuteReader()
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}" +
ControlChars.Tab + "{2}" + ControlChars.Tab + "{3}", oReader.GetName(0),
oReader.GetName(3), oReader.GetName(4), oReader.GetName(5))
While oReader.Read()
Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}" +
ControlChars.Tab + "{2}" + ControlChars.Tab + "{3}", oReader.GetInt32(0),
oReader.GetString(3), oReader.GetDecimal(4), oReader.GetInt16(5))
End While oReader.Close()
oConnection.Close()
Catch e As Exception
Console.WriteLine(("L'erreur suivante a t rencontre :" + e.Message))
End Try
End Sub 'Main
End Class 'SQLProcStock
End Namespace 'ExempleAdoNetVBNET
Une fois le code excut, la liste suivante s'affiche :

9.Conclusion
Nous avons abord dans cet article quelques uns des objets disponibles dans ADO .Net.
et plus particulirement le mode connect propos par l'objet DataReader. Cet objet offre
une solution performante pour accder rapidement des donnes et pour traiter des
donnes dont la taille est trop importante pour tre stocke en mmoire.

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
11 - 14

Intgrer les accs aux donnes dans le client en mode connect

OFPPT @

Document

Millsime

C-A-001.doc

juillet 12

Page
12 - 14

You might also like