Vous êtes sur la page 1sur 16

13/11/2022

L’accès aux bases de données: ADO.NET

 ADO.NET : permet un accès et une gestion des données


utilisant des requêtes SQL

 Object-Relational Mapping (ORM) : Un mapping objet-


relationnel qui crée l’illusion d’une base de données orientée
objet à partir d’une base de données relationnelle en
définissant des correspondances (mapping)
◦ Entity Framework (Microsoft) ➔le plus utilisé
◦ LINQ to SQL (Microsoft)
◦ Nhibernate (Open Source)
◦ LLBLGen Pro (propriétaire)
◦ …

1
13/11/2022

 L’accès aux bases de données peut se faire grâce à


l’ADO.NET qui permet un accès et une gestion des
données utilisant des requêtes SQL et/ou des
procédures stockées.

 Afin d’utiliser l’ADO.NET, on doit spécifier et référencer


le fournisseur :
◦ Pour une base ACCESS: using System.Data.OleDb;
◦ Pour une base Mysql: using MySql.Data.MySqlClient;
◦ Pour une base SQL Server: using System.Data.SqlClient;
◦ Etc.

 Le cours sera présenté avec OleDB et un exemple


MySQL sera donné.

2
13/11/2022

 L'objet Connection : assure la connectivité avec


une source de données.
 L'objet Command : permet l'accès aux
commandes de base de données pour :
◦ retourner des données,
◦ modifier des données,
◦ exécuter des procédures stockées
◦ et envoyer ou extraire des informations sur les
paramètres.
 Le DataReader : fournit un flux très performant
de données en provenance de la source de
données.

 Afin d’établir une connexion, il faut spécifier la


chaîne de connexion (connectionstring).
 Dans le cas d’une base Access, les paramètres
à spécifier sont :
◦ Le fournisseur : Provider
◦ Le chemin de la base : Data Source
◦ Etc.
 Cette chaîne peut très bien être écrite
directement dans le code :

3
13/11/2022

 Il est préférable de placer la chaîne de connexion


dans un fichier de config(fichier texte)

 Faire appel à cette chaine dans le code :

 Une fois la chaîne de connexion définie, on crée


et établit une nouvelle connexion:

 A la fin de son utilisation, il est préférable de


fermer la connexion:

4
13/11/2022

 Contenu du fichier DataAccess :

 L’exécution d’une commande:


Après avoir établi une connexion à une source
de données, on peut exécuter des commandes
et retourner les résultats de la source à l'aide
d'un objet Command.
 Une commande permet de :
◦ Retourner un ensemble de données (un jeu de
résultats)
◦ Retourner une valeur unique (sum, count, etc.)
◦ Exécuter des opérations de mise à jour(Insert, Update,
Delete)
◦ Modification du schéma de la base.

10

10

5
13/11/2022

 Un objet commande doit forcément être exécuté


par l’une de ses méthodes Execute.
 Trois types d’exécution sont possibles :
◦ ExecuteNonQuery() : Pour effectuer des mises à jour.
Destiné aux requêtes (INSERT, UPDATE, DELETE),

◦ ExecuteScalar() : Permet de lire la première valeur de la


première ligne. Destiné aux requêtes SELECT qui
retournent une seule valeur.

◦ ExecuteReader() : Permet de retourner un flux de données


dans un objet DataReader. Destiné aux requêtes SELECT.

11

 Une commande doit spécifier la requête à


exécuter et la connexion établie.

 Exemples :

12

12

6
13/11/2022

 Les instructions SQL qui modifient les données (INSERT,


UPDATE ou DELETE) ne retournent pas de lignes.
 Pour exécuter des commandes de mise à jour, on peut
utiliser la méthode ExecuteNonQuery() de l'objet
Command.
 ExecuteNonQuery() retourne le nombre de lignes
affectés : 0 ➔ aucune ligne n’a été modifiée
 Exp.:

13

13

 L'objet Command permet de retourner une valeur


unique à l'aide de la méthode ExecuteScalar.
 La méthode retourne un objet qui doit être casté
(converti),
 La méthode ExecuteScalar() retourne la valeur de la
première colonne de la première ligne du jeu de
résultats.
 Exp.:

14

14

7
13/11/2022

 L’objet command permet de retourner un flux de


données dans un objet DataReader avec la
méthode ExecuteReader().

 La méthode crée et retourne un objet DataReader.

 Exemple:

15

15

 L’objet DataReader propose plusieurs


méthodes, les plus utilisées sont:
◦ Read() : permet de lire les enregistrements du jeu
de résultats retournées ligne par ligne.
◦ GetValue(i) : la valeur de la colonne d’indice i pour
la ligne de données courante. Une conversion est
souvent nécessaire. => Il est préférable d’utiliser
GetInt32, GetFloat, GetString….
◦ HasRows() :permet de déterminer si le DataReader a
retourné des résultats.

16

16

8
13/11/2022

Exemple du cours : Une base Access nommé ProduitsDB.accdb


contenant une table Produits(Id: autoincrémental, Nom: chaîne,
PrixU: réel) a été placé dans le chemin « c:\base_chemin\ »

Le fichier DataAccess.cs vous a été fourni.

Dans cette partie, on va utiliser deux approches pour lire les données
et les afficher dans un DataGridView :

 DataTable : Récupérer le jeu de données du DataReader dans une


DataTable et le définir comme DataSource du DataGridView

 List générique : Parcourir le jeu de données du DataReader et


ajouter les éléments à une liste générique. Par la suite, définir les
colonnes du DataGridView et ajouter les éléments de la liste
comme lignes du DataGridView

17

17

18

9
13/11/2022

19

20

10
13/11/2022

 Créer l’interface de recherche par prix

21

 Le bouton Rechercher permettra d’afficher les


produits compris entre un prix min et un prix
max

 Vous devez gérer les différents cas de saisie :


◦ Pas de saisie => tous les produits sont affichés
◦ Saisie d’un prix min ou un prix max seulement
◦ Saisie d’un prix min et d’un prix max

22

11
13/11/2022

23

 Créer l’interface de gestion des produits

24

12
13/11/2022

 Modifier La classe produit afin de rajouter:


◦ Produit RechercherProduitDB(int _ID)
◦ AjouterProduitDB()
◦ ModifierProduitDB()
◦ SupprimerProduitDB()

 Ces méthodes feront appel aux méthodes du


fichier DataAccess

25

26

13
13/11/2022

27

 Ajouter le code des boutons :


◦ Ajouter
◦ Rechercher
◦ Modifier
◦ Supprimer
 Ces méthodes font appel aux méthodes de la
classe Produit :
◦ Produit RechercherProduitDB(int _ID)
◦ AjouterProduitDB()
◦ ModifierProduitDB()
◦ SupprimerProduitDB()

28

14
13/11/2022

29

30

15
13/11/2022

31

32

16

Vous aimerez peut-être aussi