Introduction
La technologie ADO.NET est une composante d'accès aux données (comme Azure, SQL Server, Oracle, MySQL,...) pour les programmeurs du cadre d'application .NET. Il s'agit d'une version .NET de l'ADO précédemment développé par Microsoft. Le ADO.NET fournit un riche ensemble de composantes et ensemble de classes exposant des services d'accès aux données pour créer des applications distribuées de partage de données. Il fait partie intégrante du cadre d'application .NET et permet d'accéder aux données relationnelles, d'exploiter la puissance du XML et de ses applications. Le ADO.NET prend en charge divers besoins de développement, notamment la création de clients de base de données frontaux et d'objets métier de niveau intermédiaire utilisés par les applications, les outils, les langages de programmation ou les navigateurs Web. Les fournisseurs de données ADO.NET contiennent des classes représentant les objets Connection, Command, DataAdapter et DataReader du fournisseur (entre autres).
Voici les principales caractéristiques d'ADO.NET :
- Architecture basée sur les objets : ADO.NET est structuré autour de plusieurs objets principaux facilitant l'accès aux données, notamment :
- Connection : Représente une connexion à une base de données (exemple : SqlConnection pour SQL Server).
- Command : Permet d'exécuter des commandes SQL (exemple : SqlCommand).
- DataReader : Permet la lecture en lecture seulement et forward-only des données.
- DataSet : Représente un ensemble de données en mémoire, déconnecté de la base de données.
- DataAdapter : Sert de pont entre une base de données et un DataSet.
- Accès à des données déconnectées : DataSet permet de manipuler les données en mémoire sans avoir besoin d'une connexion continue à la base de données. Vous pouvez remplir un DataSet, le manipuler, puis synchroniser les modifications avec la base de données.
- Support pour plusieurs sources de données : ADO.NET est conçu pour travailler avec différents types de bases de données, qu'elles soient relationnelles (SQL Server, Oracle, MySQL) ou non relationnelles. Il fournit des fournisseurs de données spécifiques, tels que :
- System.Data.SqlClient pour SQL Server.
- System.Data.OracleClient pour Oracle.
- System.Data.OleDb pour accéder aux bases de données via OLE DB.
- System.Data.Odbc pour accéder aux bases de données via ODBC.
- Interopérabilité XML :
- ADO.NET a un support intégré pour XML, permettant de convertir facilement les données entre des structures relationnelles et des formats XML.
- Le DataSet peut être sérialisé en XML, et il peut également lire/écrire des données à partir d'un fichier XML.
- Transactions :
- ADO.NET prend en charge les transactions, ce qui vous permet d'assurer la cohérence et la durabilité des opérations sur les données.
- Vous pouvez exécuter plusieurs commandes sous une transaction via l'objet Transaction, et vous avez la possibilité de confirmer (commit) ou annuler (rollback) les modifications.
- Mise à l'échelle et efficacité :
- ADO.NET est conçu pour être performant et évoluer à grande échelle, en minimisant les connexions ouvertes à la base de données via le modèle de données déconnecté (grâce au DataSet et au DataAdapter).
- Il utilise également le bassin de connexions pour réutiliser des connexions déjà ouvertes, réduisant ainsi la surcharge liée à l'ouverture de nouvelles connexions.
- Sécurité :
- ADO.NET offre un support pour des connexions sécurisées via des méthodes d'authentification comme l'authentification Windows ou SQL Server.
- Les chaînes de connexion (ConnectionString) peuvent être sécurisées et cryptées dans les fichiers de configuration pour protéger les informations sensibles.
- Support de LINQ to DataSet : Vous pouvez utiliser LINQ (Language Integrated Query) pour interroger des données dans un DataSet ou une autre structure ADO.NET, ce qui rend l'accès aux données plus simple et plus flexible.
- Support pour les STORED PROCEDURE : ADO.NET permet d'exécuter des procédures entreposées dans les bases de données, ce qui améliore la sécurité, la performance et la maintenance du code.
- Mise en cache des données : Le modèle déconnecté d'ADO.NET (via DataSet) permet de mettre en cache les données en mémoire, ce qui est utile pour les scénarios où les données ne changent pas fréquemment et peuvent être réutilisées sans nouvelles requêtes à la base de données.
- Gestion des erreurs : ADO.NET inclut des mécanismes robustes pour capturer et gérer les erreurs via des exceptions comme SqlException, OleDbException,... Vous pouvez gérer les erreurs relatives aux bases de données dans vos applications en utilisant le bloc try-catch.
- Compatibilité avec les services Web : ADO.NET peut être utilisé pour envoyer et recevoir des données via des services Web, facilitant ainsi l'interopérabilité avec d'autres systèmes.
Connexion
En général, les informations de connexion (Connection) est situé dans les ConnectionString de l'un des deux fichiers de configurations machine.config ou Web.config sinon il peut être indiqué directement dans l'objet SqlConnection. Voici un exemple de connexion à une base de données et de l'exécution d'une commande SQL :
- using System.Data.SqlClient;
-
- string connectionString = "Data Source=nom_serveur;Initial Catalog=nom_basededonnees;Integrated Security=True";
-
- using (SqlConnection connection = new SqlConnection(connectionString)) {
- connection.Open();
-
- SqlCommand command = new SqlCommand("SELECT * FROM TableName", connection);
- SqlDataReader reader = command.ExecuteReader();
-
- while (reader.Read()) {
- Console.WriteLine(reader["ColumnName"]);
- }
- }