Fiche de révision : Introduction à ADO.NET et gestion des transactions

📋 Plan du Cours

  1. ADO.NET et modèles d’accès aux données
  2. Data Providers et classes dérivées
  3. Classes ADO.NET essentielles
  4. Installation et packages NuGet ADO.NET
  5. Connexion avec SqlConnection et using
  6. SqlCommand et exécution des requêtes
  7. DataReader pour lecture performante
  8. Procédures stockées et paramètres
  9. Transactions avec SqlTransaction

📖 1. ADO.NET et modèles d’accès aux données

🔑 Notions clés & Définitions

  • ADO.NET : ADO.NET est un ensemble de composants du Framework .NET pour accéder et gérer des données provenant de bases relationnelles ou de sources non relationnelles.
  • Modèle connecté : Le modèle connecté envoie directement les requêtes à la base de données pendant l’exécution.
  • Modèle déconnecté : Le modèle déconnecté charge les données en mémoire puis synchronise avec la base plus tard.

📝 Points essentiels

  • ADO.NET sert à accéder et gérer des données situées sur une base relationnelle ou non.
  • ADO.NET propose deux modèles d’accès aux données : connecté et déconnecté.
  • En modèle connecté, les requêtes sont traitées directement par la base pendant l’appel.
  • En modèle déconnecté, les requêtes sont d’abord chargées en mémoire puis synchronisées ultérieurement.
  • ADO.NET peut viser des sources comme SQL Server, Oracle, XML ou fichiers plats (selon le provider et la source).
  • Le choix du modèle influence le moment où les données sont lues/écrites par rapport à la base.

💡 Astuce mémo

Connecté = “ça parle à la base tout de suite”, Déconnecté = “ça bosse en mémoire puis ça synchronise”.

📖 2. Data Providers et classes dérivées

🔑 Notions clés & Définitions

  • Data Provider : Un Data Provider est le fournisseur de données utilisé par ADO.NET pour se connecter à un type de base de données donné.
  • Data Provider SQL Server : Le Data Provider de SQL Server est optimisé pour fonctionner avec les bases SQL Server.
  • Data Provider Oracle : Le Data Provider Oracle est optimisé pour fonctionner avec les bases de données Oracle.
  • Classe de base des providers : Tous les Data Providers dérivent d’une même classe et partagent des méthodes et propriétés similaires.

📝 Points essentiels

  • Pour se connecter via ADO.NET, on utilise un Data Provider adapté à la base ciblée.
  • Le provider SQL Server est conçu pour SQL Server, et le provider Oracle pour Oracle.
  • Les providers dérivent d’une même classe, ce qui rend leur utilisation globalement comparable.
  • Certains providers sont inclus dans le framework, d’autres se téléchargent via des packages.
  • On peut aussi créer un provider soi-même pour étendre la compatibilité avec d’autres SGBD.
  • Grâce à ce système, ADO.NET peut se connecter à de nombreux SGBD (exemples cités : SQL Server, Oracle, MySql, PostGreSQL).

💡 Astuce mémo

Provider = “adaptateur” : SQL Server ↔ SQL Server, Oracle ↔ Oracle, et tous suivent le même squelette.

📖 3. Classes ADO.NET essentielles

🔑 Notions clés & Définitions

  • Command : Command stocke les informations d’une commande et permet son exécution sur le serveur de base de données.
  • CommandBuilder : CommandBuilder génère automatiquement des commandes et des paramètres pour un DataAdapter.
  • Connection : Connection établit une connexion à une source de données spécifiée.
  • DataAdapter : DataAdapter transfère des données entre la base et l’application, notamment en mode déconnecté.
  • DataReader : DataReader fournit un accès en lecture seule à une source de données.

📝 Points essentiels

  • Command sert à exécuter des requêtes ou opérations sur le serveur via une commande construite.
  • CommandBuilder peut générer automatiquement des commandes et des paramètres pour un DataAdapter.
  • Connection est l’objet qui établit la connexion vers la source de données.
  • DataAdapter est utilisé pour transférer des données base↔application en mode déconnecté.
  • DataReader lit en lecture seule et sera détaillé pour une lecture performante.
  • Transaction représente une transaction côté serveur et sera utilisée pour valider ou annuler des requêtes.

💡 Astuce mémo

Command = exécuter, Connection = se connecter, DataAdapter = déconnecté, DataReader = lire vite, Transaction = valider/annuler.

📖 4. Installation et packages NuGet ADO.NET

🔑 Notions clés & Définitions

  • NuGet System.Data.SqlClient : System.Data.SqlClient est le package NuGet à ajouter en .NET Core pour utiliser ADO.NET avec SQL Server.
  • .NET Framework : .NET Framework intègre ADO.NET de base dans les projets .NET.

📝 Points essentiels

  • En .NET Framework, ADO.NET est intégré de base dans les projets .NET.
  • En .NET Core, il faut ajouter un package NuGet pour utiliser SqlClient.
  • Le package cité pour .NET Core est System.Data.SqlClient.
  • L’ajout du package permet d’accéder aux classes nécessaires côté SQL Server.
  • Sans ce package en .NET Core, les classes SqlConnection/SqlCommand ne sont pas disponibles comme en .NET Framework.
  • Le besoin d’installation dépend donc du type de projet (.NET Framework vs .NET Core).

💡 Astuce mémo

Framework = déjà là ; Core = package à ajouter (System.Data.SqlClient).

📖 5. Connexion avec SqlConnection et using

🔑 Notions clés & Définitions

  • SqlConnection : SqlConnection est la classe ADO.NET qui attend une connection string pour se connecter à une base SQL Server.
  • Connection string : La connection string est la chaîne de connexion passée à SqlConnection pour définir la cible et les paramètres de connexion.
  • using : using est utilisé pour créer un objet SqlConnection et garantir sa fermeture automatique via IDisposable.

📝 Points essentiels

  • SqlConnection attend une connection string en paramètre.
  • La connexion doit être ouverte avant d’exécuter une requête.
  • SqlConnection implémente IDisposable, ce qui permet une fermeture automatique si l’objet est dans un using.
  • Le code type ouvre la connexion avec sqlConnection.Open() avant toute exécution.
  • Le code type affiche l’état via sqlConnection.State.
  • Le code type gère les erreurs via un bloc try/catch autour de la connexion.

💡 Astuce mémo

SqlConnection + Open() + using : connexion prête puis fermeture automatique.

📖 6. SqlCommand et exécution des requêtes

🔑 Notions clés & Définitions

  • SqlCommand : SqlCommand représente une commande SQL (requête ou procédure stockée) exécutée sur une connexion.
  • CommandText : CommandText est la propriété où l’on renseigne la requête SQL à exécuter.
  • CommandType : CommandType indique le type de commande, par exemple requête texte ou procédure stockée.

📝 Points essentiels

  • Les requêtes SQL et procédures stockées s’exécutent à partir d’objets Command (ici SqlCommand).
  • Une SqlCommand contient les informations nécessaires à l’exécution sur le serveur.
  • On renseigne la requête SQL soit dans le constructeur, soit dans CommandText.
  • SqlCommand peut exécuter des opérations de lecture, création, modification ou suppression.
  • Pour une procédure stockée, on renseigne CommandType et le nom de la procédure.
  • Le couple SqlCommand + SqlConnection est la base du flux d’exécution côté ADO.NET.

💡 Astuce mémo

SqlCommand = “la phrase à envoyer”, CommandText = “le texte de la phrase”.

📖 7. DataReader pour lecture performante

🔑 Notions clés & Définitions

  • SqlDataReader : SqlDataReader est un DataReader utilisé pour lire un flux en lecture seule et en avant seulement depuis une source de données.
  • ExecuteReader : ExecuteReader exécute une commande et renvoie un DataReader pour parcourir les résultats.
  • Lecture forward only : La lecture forward only signifie que le DataReader avance ligne par ligne dans un seul sens.
  • NextResult : NextResult permet de passer d’un résultat (par exemple plusieurs SELECT) à l’autre dans le même DataReader.

📝 Points essentiels

  • DataReader récupère un flux en lecture seule et forward only.
  • Le DataReader est obtenu via ExecuteReader sur un objet Command.
  • DataReader ne stocke qu’une seule ligne à la fois en mémoire.
  • Cette approche améliore les performances et réduit la charge mémoire.
  • Par défaut, chaque appel à Read charge une ligne entière en mémoire.
  • On accède aux colonnes soit par nom, soit par index ordinal, et il existe des méthodes typées (GetInt32, GetDouble, GetString).

💡 Astuce mémo

Reader = “une ligne à la fois” ; plusieurs SELECT = NextResult pour changer de résultat.

📖 8. Procédures stockées et paramètres

🔑 Notions clés & Définitions

  • Procédure stockée : Une procédure stockée est appelée via une commande SQL en utilisant Command et la collection Parameters.
  • Parameters : Parameters est la collection de SqlCommand qui permet de définir explicitement les paramètres d’une commande.
  • SqlParameter : SqlParameter représente un paramètre nommé avec valeur, type et taille pour une commande ou procédure stockée.
  • AddWithValue : AddWithValue ajoute un paramètre à la commande en fournissant directement le nom et la valeur.

📝 Points essentiels

  • On appelle une procédure stockée avec SqlCommand et la collection Parameters.
  • Parameters permet de définir explicitement des paramètres en entrée et en sortie, ainsi que le code retour.
  • Un paramètre possède un nom, une valeur, un type et une taille pour le type.
  • Pour une procédure stockée, on renseigne CommandType à StoredProcedure.
  • Exemple : création d’un SqlParameter avec un nom (ex. ClientId) et une valeur (ex. 10).
  • Les paramètres fonctionnent aussi sur des requêtes classiques via des placeholders comme @Id.

💡 Astuce mémo

Procédure stockée = CommandType StoredProcedure + Parameters (nom, valeur, type, taille).

📖 9. Transactions avec SqlTransaction

🔑 Notions clés & Définitions

  • SqlTransaction : SqlTransaction représente une transaction côté serveur et permet de regrouper plusieurs opérations SQL sous un même contrôle.
  • BeginTransaction : BeginTransaction démarre une transaction sur la connexion et renvoie un objet SqlTransaction.
  • Commit : Commit valide la transaction, ce qui confirme l’ensemble des opérations réalisées pendant la transaction.
  • Rollback : Rollback annule la transaction, ce qui supprime l’effet des opérations réalisées depuis le début de la transaction.

📝 Points essentiels

  • Les transactions ADO.NET permettent de valider toutes les requêtes SQL ou d’annuler en cas de problème.
  • L’objet transaction est IDisposable.
  • On crée une transaction via sqlConnection.BeginTransaction().
  • On associe la transaction aux commandes via la propriété Transaction de chaque SqlCommand.
  • Dans l’exemple, une exception simulée force l’exécution du catch.
  • En cas d’erreur, on appelle Rollback ; sinon, on appelle Commit.

💡 Astuce mémo

Transaction = tout ou rien : Commit si OK, Rollback si erreur.

📊 Tableaux de synthèse

Modèles d’accès ADO.NET

ModèleTraitementDonnées en mémoire
ConnectéRequêtes envoyées directement à la basePas de chargement préalable en mémoire
DéconnectéRequêtes chargées puis synchronisées plus tardDonnées chargées en mémoire avant synchronisation

DataReader vs opérations non-lectures

CasMéthode d’exécutionRésultat attendu
Lecture (SELECT)ExecuteReaderFlux de lignes à parcourir avec Read
Insertion/Maj/SuppressionExecuteNonQueryNombre de lignes modifiées

⚠️ Pièges & confusions fréquents

  1. Confondre le modèle connecté et le modèle déconnecté : en déconnecté, les données sont d’abord en mémoire puis synchronisées plus tard.
  2. Oublier sqlConnection.Open() avant d’exécuter une commande : la connexion doit être ouverte avant toute requête.
  3. Utiliser DataReader pour des opérations qui ne renvoient pas de lignes : pour INSERT/UPDATE/DELETE, ExecuteNonQuery est attendu.
  4. Croire que DataReader stocke tout le résultat : il ne garde qu’une seule ligne à la fois.
  5. Ne pas gérer plusieurs SELECT : sans NextResult, on ne passe pas au résultat suivant dans le même DataReader.
  6. Confondre Commit et Rollback : Commit valide, Rollback annule l’ensemble des opérations de la transaction.

✅ Checklist Examen

  1. Définir ADO.NET et distinguer les modèles connecté et déconnecté.
  2. Expliquer le rôle d’un Data Provider et pourquoi les providers sont dérivés d’une même classe.
  3. Citer les classes ADO.NET essentielles (Command, CommandBuilder, Connection, DataAdapter, DataReader, Transaction) et leur fonction.
  4. Savoir quel package NuGet ajouter en .NET Core pour utiliser SqlClient (System.Data.SqlClient).
  5. Décrire le flux de connexion avec SqlConnection : connection string, Open(), et fermeture automatique via using.
  6. Savoir comment construire une SqlCommand et où renseigner la requête (constructeur ou CommandText).
  7. Expliquer le fonctionnement de DataReader : lecture forward only, une ligne à la fois, accès par nom/ordinal, méthodes typées.
  8. Savoir appeler une procédure stockée via SqlCommand : CommandType StoredProcedure et paramètres via Parameters/SqlParameter.
  9. Savoir utiliser des paramètres sur une requête classique avec placeholders (ex. @Id) et AddWithValue.
  10. Distinguer lecture vs non-lecture : ExecuteReader pour SELECT et ExecuteNonQuery pour INSERT/UPDATE/DELETE (avec nombre de lignes).
  11. Décrire la mise en place d’une transaction : BeginTransaction, affectation à plusieurs commandes, Commit en succès et Rollback en cas d’erreur.

Testez vos connaissances

Testez vos connaissances sur Introduction à ADO.NET et gestion des transactions avec 18 questions à choix multiples avec corrections détaillées.

1. Quel est le rôle principal d’ADO.NET dans un projet .NET ?

2. Quelle différence décrit correctement le modèle connecté et le modèle déconnecté en ADO.NET ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Introduction à ADO.NET et gestion des transactions avec 18 flashcards interactives.

ADO.NET — définition ?

Ensemble de composants pour accéder aux données.

Modèle connecté — rôle ?

Envoie directement les requêtes à la base.

Modèle déconnecté — rôle ?

Charge les données en mémoire puis synchronise.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches