11 visual basic .net - acces aux donnees avec ado .net
1. Microsoft Visual Basic .NET
Découverte du nouvel environnement
Visual Studio .NET
Éléments du langage Visual Basic .NET
Étude et mise en œuvre des
fonctionnalités du nouveau Framework
.NET
Programmation orientée objet et
développement de composants
réutilisables
Accès aux données avec ADO .NET
Professeur: Hamza SAID
1
2. Accès aux données avec ADO .NET
Introduction à ADO .NET et
notions de base sur SQL
Serveur
Accès aux données grâce
aux objets ADO .NET
Professeur: Hamza SAID
2
3. 1. Rappel sur les bases de données
2. Pourquoi ADO .NET ?
3. Présentation de SQL SERVEUR
Introduction à ADO .NET et
notions de base sur SQL Serveur
3
Professeur: Hamza SAID
Accès aux données avec ADO .NET
4. • Dans le langage courant, le terme base de données
est utilisé pour désigner toute source importante de
données telle qu'une encyclopédie
• En informatique, une base de données (Abr. : « BD »
ou « BDD ») est un lot d'informations stockées dans un
dispositif informatique.
• Les technologies existantes permettent:
• d'organiser et de structurer la base de données et mieux manipuler son contenu
• de stocker efficacement de très grandes quantités d'informations
Rappel sur les bases de données4
Professeur: Hamza SAID
Introduction à ADO .NET et
notions de base sur SQL Serveur
5. • L'organisation logique des données se fait selon un
modèle de données (Ex.: modèle de données relationnel)
• L'organisation logique est indépendante de la structure
physique
• Une modification de l'organisation logique ne provoque pas de modification de la
structure physique et vice-versa
• La motivation fondamentale de l'organisation des
données est de permettre d'effectuer des requêtes sur
celles-ci.
• Le modèle de données relationnel est aujourd'hui le plus utilisé parce qu'il est
formellement démontré que ce type de représentation permet de résoudre toutes
requêtes
Rappel sur les bases de données5
Professeur: Hamza SAID
Introduction à ADO .NET et
notions de base sur SQL Serveur
6. • Le logiciel qui manipule les bases de données est
appelé « Système de Gestion de Base de Données »
(SGBD)
• Il permet d'organiser, de contrôler, de consulter et de modifier la base de
données.
• Les opérations sont formulées dans un langage de requête tel que SQL – le
plus connu et employé pour les modèles relationnels.
Rappel sur les bases de données6
Professeur: Hamza SAID
Introduction à ADO .NET et
notions de base sur SQL Serveur
7. • Le catalogue de la librairie en ligne amazon.com est une des plus
grandes bases de données au monde avec plus de 250 millions
d'ouvrages catalogués. La société Amazon.com est également
propriétaire de la banque de données filmographique IMDb.
• Le Système d'information Schengen est une application de base de
données utilisée par les services de police et des douanes de l'Espace
Schengen, en Europe pour collecter et s'échanger des renseignements
judiciaires (mandats d'arrêt, empreintes digitales, interdictions de séjour...)
• Les logiciels antivirus utilisent souvent une base de données dans laquelle
sont enregistrées les empreintes laissées par les virus informatiques.
• Etc.
Exemples7
Professeur: Hamza SAID
Rappel sur les bases de données
8. 1. Bref historique
2. Solution proposée par .NET
Pourquoi ADO .NET ?8
Professeur: Hamza SAID
Introduction à ADO .NET et
notions de base sur SQL Serveur
9. • L'une des principales raisons de l'évolution rapide qu'ont subie les
technologies d'accès aux données a été le besoin de réduire le couplage
existant entre l'application et la base de données
• La première étape marquante fut l'apparition de l'ODBC (Open Data
Base Connectivity)
• L'ODBC sert d'interface (middleware) entre les applications et la base de
données
• L'ODBC possède un gestionnaire de pilotes que l'on trouve dans le
panneau de configuration de Windows (comme un gestionnaire
d'impression)
• L'ODBC est basé sur des appels API écrits en C, les accès aux données se
sont vite révélés difficiles à mettre en oeuvre
Bref historique9
Professeur: Hamza SAID
Pourquoi ADO .NET ?
10. • Microsoft Access fut lancée avec une programmation fondée sur un
modèle objet beaucoup plus simple à manipuler que les API
• Ce qui conduit Microsoft a encapsuler ces API dans un modèle objet
nommé RDO(Remote Data Object) calqué sur le modèle Access
• Avec l'avènement d'Internet, il y a eu un besoin de répartir davantage
les traitements
• ADO (ActiveX Data Objects) sont apparues avec Visual Basic 6
• ADO sont des composants COM basés sur une nouvelle API nommée OLE
DB
• supportent plus de formats de données
• reprennent les sources de données ODBC
Bref historique10
Professeur: Hamza SAID
Pourquoi ADO .NET ?
11. • Avec cette architecture (ADO), on commence à parler
de "sources de données" de manière générique.
L'application qui utilise ces données est considérée
comme "consommateur de données"
• Problème majeur : ADO ne fonctionne que sous
Windows
Bref historique11
Professeur: Hamza SAID
Pourquoi ADO .NET ?
12. Sortie de l’ADO .NET qui présente les nouveautés
suivantes :
• Une architecture plus optimisée :
• de nouveaux fournisseurs de données voient le jour.
• Certains fournisseurs fonctionnent en mode natif:
• Suppression des couches intermédiaires entre l'application et sa source de données.
• Accès direct à la source de données.
• Par exemple le .NET Framework comprend le fournisseur de données SQL Server .NET
en mode natif via le namespace System.Data.SqlClient.
Solution proposée par .NET12
Professeur: Hamza SAID
Pourquoi ADO .NET ?
13. • Un meilleur support du mode déconnecté (Offline) :
• Dans une application Web, le maintien d'une connexion SGBD ouverte doit être
le plus court possible
• car le nombre de connexions ouvertes vers une source de données peut constituer un
frein à la capacité de montée en charge d'une application.
• Le modèle ADO dans son temps, avait évolué afin de répondre à ce besoin par
un Recordset déconnecté.
• Aujourd'hui Microsoft encourage le mode déconnecté et propose des classes
spécialisées supportant les deux modes :
• connecté (via l'objet DataReader)
• et déconnecté (via l'objet DataSet).
La réponse .NET13
Professeur: Hamza SAID
Pourquoi ADO .NET ?
14. • Un meilleur support de XML :
• Dans ADO .NET XML est utilisé comme le format de transmission universel de
données.
La réponse .NET14
Professeur: Hamza SAID
Pourquoi ADO .NET ?
Note :
Les ADO classiques sont toujours disponibles dans l'environnement
.NET
15. • Microsoft SQL Server est un système de gestion de
base de données (SGBD) développé et
commercialisé par la société Microsoft
• Initialement co-développé par Sybase et Microsoft
• Sa première version date de 1989
• La version 2008 de SQL Server est disponible depuis
août 2008. Elle est actuellement au niveau de service
pack 2
Présentation de SQL SERVEUR15
Professeur: Hamza SAID
Introduction à ADO .NET et
notions de base sur SQL Serveur
17. 1. Langages
2. Relations
3. Transactions
4. Fichiers
5. Objets de la base de données
6. Editions SQL Server
Fonctionnement17
Professeur: Hamza SAID
Présentation de SQL SERVEUR
18. • Pour les requêtes, SQL Server utilise T-SQL (Transact-
SQL)
• Il s'agit d'une implémentation de SQL qui prend en
charge les procédures stockées et les déclencheurs
(Trigger)
• Le T-SQL est incompatible avec le PL/SQL d'Oracle
Langages18
Professeur: Hamza SAID
Présentation de SQL SERVEUR
19. • SQL Server est un SGBD relationnel.
• Il est possible de définir des relations entre les tables
de façon à garantir fortement l'intégrité des données
qui y sont stockées.
• Ces relations peuvent être utilisées pour modifier ou
supprimer en chaîne des enregistrements liés
Relations19
Professeur: Hamza SAID
Présentation de SQL SERVEUR
20. • SQL Server est un SGBD transactionnel.
• Il est capable de préparer des modifications sur les
données d'une base et de les valider ou de les
annuler d'un bloc.
• Cela garantit l'intégrité des informations stockées
dans la base.
Transactions20
Professeur: Hamza SAID
Présentation de SQL SERVEUR
21. Les bases de données sont contenues physiquement dans des
fichiers. Les fichiers portent généralement les extensions :
• MDF (Main Database File) pour le premier fichier de données
• NDF (Next Database File) pour les autres fichiers de données
• LDF (Log Database File) pour les fichiers du journal de
transaction
• SDF (SQL Server Compact Edition Database File) pour les
bases de données SQL Server Compact
Fichiers21
Professeur: Hamza SAID
Présentation de SQL SERVEUR
22. • Plusieurs objets peuvent coexister :
• Tables
• Vues
• Index
• Procédures stockées
• Déclencheurs (Triggers)
• Fonctions (UDF : User Defined Function)
• Aspects objet
• Ex.: la possibilité de réaliser des types complexes structurés via un langage externe
de type .net et de les utiliser aussi bien en tant que colonne de table qu'en tant que
type d'une variable dans une routine (procédure, déclencheur ou fonction).
Objets de la base de données22
Professeur: Hamza SAID
Présentation de SQL SERVEUR
24. • Datacenter Edition:
• Amenée à apparaître avec SQL Server 2008 R2, elle supportera jusqu'à 256 processeurs, ainsi
que la virtualisation illimitée.
• Enterprise Edition:
• Elle supporte un nombre de processeurs et une taille de mémoire vive illimitée (limités par le
système d'exploitation) et n'a pas de limite quant à la taille des bases de données.
• Developer Edition:
• Il s'agit d'une édition pour les développeurs qui dispose des mêmes fonctionnalités que l'édition
Entreprise. Cependant la licence contient des restrictions quant à son utilisation.
• Standard Edition:
• Elle supporte jusqu'à 4 processeurs et une taille de mémoire vive illimitée (limitée par le
système d'exploitation) et n'a pas de limite quant à la taille des bases de données.
Editions SQL Server24
Professeur: Hamza SAID
Présentation de SQL SERVEUR
25. • Workgroup Edition:
• Nouvelle édition apparue avec SQL Server 2005. Elle supporte jusqu'à 2 processeurs et 3 Go de mémoire
vive, et n'a pas de limite quant à la taille des bases de données.
• Web Edition:
• Nouvelle édition apparue sous SQL Server 2008. Proche de l'édition Standard en termes de fonctionnalité. Sa
licence ne permet son utilisation que comme serveur de base de données pour un site ou service Web.
• Express Edition:
• Microsoft a édité une édition gratuite composée uniquement du moteur de base de données relationnel, bridé
à 4 Go d'espace disque (10 Go dans la version 2008 R2) et 5 utilisateurs concurrents en exécution.
• Compact Edition:
• Appelée auparavant : Pocket PC / Mobile / Everywhere Edition. Il s'agit d'une édition légère adaptée à
l'utilisation sur des PDA ou smartphones munis de Windows Mobile. La version Compact (version 3.5), qui
succède aux éditions Mobile s'ouvre elle aux postes de travail classiques à base de Windows. Cette édition
peut participer à une réplication en tant qu'abonné.
Editions SQL Server25
Professeur: Hamza SAID
Présentation de SQL SERVEUR
26. Accès aux données avec ADO .NET
Introduction à ADO .NET et
notions de base sur SQL
Serveur
Accès aux données grâce
aux objets ADO .NET
Professeur: Hamza SAID
26
27. 1. Choix d'un fournisseur de données .NET
2. Le modèle objet ADO .NET
3. L'objet « Connection »
4. L'objet « Command »
5. L'objet « DataReader »
6. L'objet « DataSet »
7. L'objet « DataAdapter »
8. Les contrôles d'accès aux données
Accès aux données grâce aux objets ADO .NET
27
Professeur: Hamza SAID
Accès aux données avec ADO .NET
28. • OLE DB et ODBC sont des fournisseurs de données
• Leurs successeurs sous .NET sont les "Providers" ou
fournisseurs d'accès managés
• Un fournisseur managé et géré et optimisé par le
Framework .NET
• C'est lui qui gère les connexions aux bases de
données
Provider (Fournisseur d’accès managé)28
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
29. • Pour pouvoir faire appel aux classes proposées par ADO .NET il est
nécessaire d'inclure une référence à l'espace de noms correspondant.
• Plusieurs espaces de noms sont disponibles avec ADO .NET parmi
lesquels :
Choix d'un fournisseur de données .NET29
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Espace de nom Description
System.Data.SqlClient Fournisseur de données spécifiques pour SQLServer V7 ou supérieure
System.Data.SqlServerCe Fournisseur de données spécifiques pour SQL Server Compact
System.Data.OleDb Propose la gestion de sources de données accédées via un driver
(générique) OleDb
System.Data.Odbc Propose la gestion de sources de données accédées via un driver Odbc
System.Data.OracleClient Propose un accès à des sources de données Oracle (v8.1.7 ou supérieure)
30. • Dans nos exemples nous allons toujours travailler avec le
fournisseur SQL Server Compact.
• L'utilisation des autres fournisseurs se fait de manière similaire.
La seule distinction est le nom qui est préfixé par OLE DB,
SQL, SQLCe etc.
Choix d'un fournisseur de données .NET30
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
'Inclusion d'un namespace
Imports System.Data.SqlServerCe
31. • ADO .NET comprend quelques objets similaires aux
ADO (comme les objets « Connection » et
« Command »)
• L'objet Recordset n'existe plus, il a été remplacé par
les objets « DataReader » et « DataSet ».
Le modèle objet ADO .NET31
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
32. • L’objet « Connection » est
toujours nécessaire pour
accéder à une base de
données
• Ensuite, deux approches
peuvent être adoptées:
1. Extraire des données en lecture seule
avec un « DataReader »
2. Créer un « DataSet » permettant de
manipuler les données
Le modèle objet ADO .NET32
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
33. • Le « DataReader » utilise
l’objet « Command » pour
accéder aux données
• Le « DataSet » est
alimenté par un objet
« DataAdapter »
Le modèle objet ADO .NET33
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
34. • 3ème approche : exécuter
des instructions SQL
UPDATE, INSERT ou DELETE
directement à partir d’un
objet « Command »
Le modèle objet ADO .NET34
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
35. Le modèle objet ADO .NET35
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Objet Description
Connection Ouvre une connexion vers une source de données spécifique
Command Exécute une commande sur une source de données
DataReader Lit un flux de données à partir d'une source de données en mode
connecté. Le mode d'accès est en lecture seule avec un curseur en avant
seulement.
DataSet Représente un ensemble de données en mode déconnecté. Il peut être
constitué de plusieurs tables ainsi que des relations et contraintes existant
entre elles.
DataAdapter Remplit un DataSet et répercute les mises à jour dans la source de
données.
36. • La connectivité à une base de données est assurée par l'objet
« Connection ».
• Le Framework .NET propose des objets de connexion
différents en fonction du type de fournisseur de données
choisi.
• Exemple:
• Pour un fournisseur SQL Server Compact on utilise l'objet « SqlCeConnection »
• Pour une connectivité à SQL Server Express on utilise « SqlConnection » de l'espace de noms
« System.Data.SqlClient ».
• « OleDbConnection » si votre fournisseur est un fournisseur « OleDb ».
• L'ouverture d'une connexion est réalisée par la méthode
« Open » et la fermeture par la méthode « Close ».
L'objet « Connection »36
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
37. L'objet « Connection » - Exemple37
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
oConnection.Open()
Console.WriteLine("Etat de la connexion : " & oConnection.State)
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
38. L'objet « Connection » - Exemple38
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
oConnection.Open()
Console.WriteLine("Etat de la connexion : " & oConnection.State)
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Instanciation
d’un objet
« Connection »
Fermeture de la connexion
Ouverture de la connexion
39. • C'est une chaîne de caractère qui donne des informations
sur une source de données et les moyens pour s'y
connecter.
• Elle est passée à un Driver ou un Provider (Fournisseur) pour
pouvoir initier une connexion
• Exemple:
• "Data Source=|DataDirectory|Northwind.sdf"
• On peut stocker la « ConnectionString » dans le fichier
« App.config » de notre projet pour avoir un meilleur accès à
cette information
• Note: lors de l'ajout d'une source de données au projet, la « connectionString » est
automatiquement créée dans le fichier « App.config »
La chaîne de connexion (ConnectionString)
39
Professeur: Hamza SAID
L'objet « Connection »
40. La chaîne de connexion (ConnectionString)
40
Professeur: Hamza SAID
L'objet « Connection »
Exemple de fichier « App.config »:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="NorthwindConnectionString"
connectionString="Data Source=|DataDirectory|Northwind.sdf"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>
41. La chaîne de connexion - Exemple41
Professeur: Hamza SAID
L'objet « Connection »
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection( _
My.Settings.NorthwindConnectionString)
oConnection.Open()
Console.WriteLine("Etat de la connexion : " & oConnection.State)
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Grâce au fichier « App.config » on peut réécrire l'exemple précédent comme suit:
Utilisation de la chaîne de connexion,
nommée « NorthwindConnectionString »
stockée dans le fichier « App.config »
42. • Une fois la connexion vers une base de données effectuée, on peut
exécuter une requête et récupérer son résultat grâce à l'objet
« Command ».
• La création d'un objet Command nécessite l'instanciation d'un objet
« SqlCeCommand » (dans le cas de SQL Server Compact).
• SQLCeCommand expose différentes méthodes "Execute" à utiliser
selon le résultat attendu :
• ExecuteReader : peut être utilisé pour récupérer un jeu d'enregistrements et
retourne un objet « DataReader ».
• ExecuteScalar : récupère une valeur unitaire.
• ExecuteNonQuery : exécute une commande ne retournant pas de lignes.
•
L'objet « Command »42
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
43. Exemple: La méthode « ExecuteNonQuery »
43
Professeur: Hamza SAID
L'objet « Command »
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')«
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
44. Exemple: La méthode « ExecuteNonQuery »
44
Professeur: Hamza SAID
L'objet « Command »
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')«
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Création de l’objet
« Command »
Exécution de la
commande
45. Exemple: La méthode « ExecuteScalar »45
Professeur: Hamza SAID
L'objet Command
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf«
Dim strRequete As String = "SELECT Count(*) FROM Categories“
Dim iResultat As Integer
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
iResultat = oCommand.ExecuteScalar
Console.WriteLine("Nb de lignes enregistrées :" & iResultat)
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
46. Exemple: La méthode « ExecuteScalar »46
Professeur: Hamza SAID
L'objet Command
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf«
Dim strRequete As String = "SELECT Count(*) FROM Categories“
Dim iResultat As Integer
Try
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
iResultat = oCommand.ExecuteScalar
Console.WriteLine("Nb de lignes enregistrées :" & iResultat)
oConnection.Close()
Catch e As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Création de l’objet
« Command »
Exécution de la
commande
47. • Scénario :
• On doit effectuer un virement bancaire d'un compte vers un autre. Dans
ce cas-ci, il faut réaliser deux opérations : le crédit d'un montant donné
sur premier compte et le débit du même montant sur un autre.
• L'équilibre de la balance des comptes ne pourrait pas être respecté si
une erreur quelconque se produisait entre les deux opérations.
• Pour éviter ce genre de situation, une série de
modifications doit être exécutée au sein d'une même
transaction afin de la rendre indivisible.
• En cas d'erreur détectée, l'ensemble des modifications est
alors annulé, et les données reprennent leur état initial.
L'objet « Transaction »47
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
48. L'objet « Transaction » - Exemple48
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf«
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')“
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim tr As SqlCeTransaction = oConnection.BeginTransaction
Try
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
tr.Commit()
oConnection.Close()
Catch e As Exception
tr.Rollback()
oConnection.Close()
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
49. L'objet « Transaction » - Exemple49
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf«
Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')“
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim tr As SqlCeTransaction = oConnection.BeginTransaction
Try
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
oCommand.ExecuteNonQuery()
tr.Commit()
oConnection.Close()
Catch e As Exception
tr.Rollback()
oConnection.Close()
Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Commencer la
transaction
Appliquer les
changements
Annuler les
changements
50. • 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 ».
• La méthode « Close » ferme un objet
« DataReader ».
L'objet « DataReader »50
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
51. • L'objet « DataReader » ne stocke en mémoire qu'une seule
ligne à la fois à 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 .).
L'objet « DataReader »51
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
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 ».
Dim iColonne As Integer
iColonne = oDataReader.GetInt32(0)
52. • Il est recommandé d'utiliser cet objet si :
• Vous n'avez pas besoin de réaliser un cache des données
• Vous traitez un jeu d'enregistrements trop important pour être stocké en
mémoire
• Vous souhaitez accéder à des données rapidement en lecture seule en avant
seulement
L'objet « DataReader »52
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
53. L'objet « DataReader » - Exemple53
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
' Exemple d'extraction de données avec l'objet DataReader
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String
strRequete = "SELECT [Category ID], [Category Name] FROM Categories;"
Try
Dim oConnection As New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlCeDataReader = oCommand.ExecuteReader()
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
oReader.Close()
oConnection.Close()
Catch ex As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & ex.Message)
End Try
54. L'objet « DataReader » - Exemple54
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
' Exemple d'extraction de données avec l'objet DataReader
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String
strRequete = "SELECT [Category ID], [Category Name] FROM Categories;"
Try
Dim oConnection As New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlCeDataReader = oCommand.ExecuteReader()
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
oReader.Close()
oConnection.Close()
Catch ex As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & ex.Message)
End Try
Récupération de l’objet
« DataReader »
Lecture ligne par ligne
de données
Fermeture du
« DataReader »
55. L'objet « DataReader » - Exemple55
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
' Exemple d'extraction de données avec l'objet DataReader
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String
strRequete = "SELECT [Category ID], [Category Name] FROM Categories;"
Try
Dim oConnection As New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlCeDataReader = oCommand.ExecuteReader()
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
oReader.Close()
oConnection.Close()
Catch ex As Exception
Console.WriteLine("L'erreur suivante a été rencontrée :" & ex.Message)
End Try
Récupération de l’objet
« DataReader »
Lecture ligne par ligne
de données
Fermeture du
« DataReader »
Résultat de l'exécution:
-----------------------------------
Category ID Category Name
1 Beverages
2 Condiments
3 Confections
4 Dairy Products
5 Grains/Cereals
6 Meat/Poultry
7 Produce
8 Seafood
56. • Le DataSet est une représentation globale de notre
base de données
• Il repose sur le langage XML (Extensible Markup
Language)
• Il peut comporter des tables, des vues, des relations,
etc.
• Le « DataSet » permet de manipuler les bases de
données en mode déconnecté
L'objet « DataSet »56
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
57. • Les principaux bénéfices qui se dégagent de ce
mode de fonctionnement sont les suivants :
• Le serveur n'a pas besoin de maintenir de connexion
active ni de gestion de curseur pendant que l'application
effectue ses traitements
• Le serveur peut faire face à une augmentation de charges
beaucoup plus facilement
• Du point de vue de l'application, les performances seront
toujours optimales, puisque la plupart des opérations
seront réalisées localement
L'objet « DataSet »57
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
58. L'objet « DataSet » - Exemple58
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
59. • L'objet « DataAdapter » nous permet de manipuler des
objets « DataSet »
• Il assure la liaison entre une base de données et un
« DataSet »
• Cet objet permet d'extraire, ajouter, supprimer, trier...
les données d'une base de données en offline, par lots
en se basant sur les données du « DataSet ».
• L'objet « DataAdapter » est souvent utilisé avec des
contrôles d'affichage ou d'édition de données tels que
« DataGridView »
L'objet « DataAdapter »59
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
60. L'objet « DataAdapter »
Exemple d'extraction de données
60
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Try
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String = "SELECT * FROM Categories“
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim ds As New DataSet
Dim da As SqlCeDataAdapter = New SqlCeDataAdapter(strRequete, strConnexion)
da.Fill(ds)
oConnection.Close()
DataGridView1.DataSource = ds.Tables(0)
Catch e As Exception
MsgBox("L'erreur suivante a été rencontrée :" & e.Message)
End Try
61. L'objet « DataAdapter »
Exemple d'extraction de données
61
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Try
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String = "SELECT * FROM Categories“
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim ds As New DataSet
Dim da As SqlCeDataAdapter = New SqlCeDataAdapter(strRequete, strConnexion)
da.Fill(ds)
oConnection.Close()
DataGridView1.DataSource = ds.Tables(0)
Catch e As Exception
MsgBox("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Création de l’objet
« DataAdapter »
Remplissage du « DataSet » avec des
données de la base de données grâce
au « DataAdapter » créé
Affectation d’une table du
« DataSet » à un contrôle
« DataGridView » pour
l’affichage
Création de l’objet
« DataSet » pour
contenir les données
62. L'objet « DataAdapter » - Resultat
Exemple d'extraction de données
62
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Try
Dim strConnexion As String = "Data Source=|DataDirectory|Northwind.sdf"
Dim strRequete As String = "SELECT * FROM Categories“
Dim oConnection As SqlCeConnection = New SqlCeConnection(strConnexion)
Dim oCommand As New SqlCeCommand(strRequete, oConnection)
oConnection.Open()
Dim ds As New DataSet
Dim da As SqlCeDataAdapter = New SqlCeDataAdapter(strRequete, strConnexion)
da.Fill(ds)
oConnection.Close()
DataGridView1.DataSource = ds.Tables(0)
Catch e As Exception
MsgBox("L'erreur suivante a été rencontrée :" & e.Message)
End Try
Création de l’objet
« DataAdapter »
Remplissage du « DataSet » avec des
données de la base de données grâce
au « DataAdapter » créé
Affectation d’une table du
« DataSet » à un contrôle
« DataGridView » pour
l’affichage
Création de l’objet
« DataSet » pour
contenir les données
63. • On remarque ici qu'on peut fournir directement une
table (DataTable) du DataSet comme source à un
contrôle « DataGridView »
DataGridView1.DataSource = ds.Tables(0)
• La mise à jour et la suppression de données se font
par lot en invoquant la méthode "Update". Tous les
changements effectués dans le DataSet seront
répercutés sur la Base de données
L'objet « DataAdapter »63
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
64. • Le DataAdapter encapsule quatre objets Command :
• Une instruction SQL SELECT qui permet d'extraire les informations voulues
• Les trois autres commandes sont générées d'après cette commande SELECT, afin
de disposer des instructions SQL UPDATE, INSERT et DELETE
• Ces trois dernières commandes peuvent soit être écrites manuellement, soit être
obtenues grâce à l'objet « SqlCeCommandBuilder »
L'objet « DataAdapter »64
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Dim cmdBuilder As SqlCeCommandBuilder = New SqlCeCommandBuilder(da)
65. L'objet « DataAdapter »
Exemple de mise à jour de données
65
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Try
Dim cmdBuilder As SqlCeCommandBuilder = New SqlCeCommandBuilder(da)
Dim changes As DataSet = ds.GetChanges()
If changes IsNot Nothing Then
da.Update(changes)
End If
MsgBox("Changes Done")
Catch ex As Exception
MsgBox("L'erreur suivante a été rencontrée :" & ex.Message)
End Try
Note importante:
Dans cet exemple, on suppose
que le DataSet (ds) et le
DataAdapter (da) ont été déjà
créés
66. L'objet « DataAdapter »
Exemple de mise à jour de données
66
Professeur: Hamza SAID
Accès aux données grâce aux objets
ADO .NET
Try
Dim cmdBuilder As SqlCeCommandBuilder = New SqlCeCommandBuilder(da)
Dim changes As DataSet = ds.GetChanges()
If changes IsNot Nothing Then
da.Update(changes)
End If
MsgBox("Changes Done")
Catch ex As Exception
MsgBox("L'erreur suivante a été rencontrée :" & ex.Message)
End Try
On crée l’objet
« SqlCeCommandBuilder » en lui
passant en paramètre notre
« DataAdapter »
On demande au DataSet de nous
fournir les changements qui ont été
effectués
Mise à jour de la base de
données avec les
changements récupérés
Note importante:
Dans cet exemple, on suppose
que le DataSet (ds) et le
DataAdapter (da) ont été déjà
créés
68. Pour des besoins de simplicité, l'environnement .NET propose des contrôles capables de
générer un « DataSet » complètement opérationnel en un temps record.
Les contrôles d'accès aux données68
Professeur: Hamza SAID
Démonstration
69. 1. Construisez une base de données SQL Server Compact pour
une gestion de contacts
2. Créez un formulaire capable d’exploiter cette base de
données (Ajout, modification, suppression et affichage des
contacts). Utilisez la 3ème approche: Exécution de commandes
SQL avec un objet « Command ».
Exercice – Gestionnaire de contacts69
Professeur: Hamza SAID
Accès aux données avec ADO .NET
70. • Architecture et Fonctionnement des objets ADO .NET
• Fonctionnement de SQL SERVER
• Fournisseurs de données (Provider)
• Les objets « Connection », « Command »,
« DataReader », « DataSet » et « DataAdapter »
• Les contrôles d'accès aux données
En bref70
Professeur: Hamza SAID
Accès aux données avec ADO .NET