Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
ADO.NET est le modèle d’accès aux données intégré à .NET. Microsoft. Data.SqlClient applique ce modèle pour les bases de données compatibles SQL Server et ajoute des fonctionnalités spécifiques à SQL Server.
La page d’accueil de Microsoft. Data.SqlClient fournit la carte des fonctionnalités du pilote et la base de production. Cet article explique comment le pilote s’intègre dans ADO.NET.
Abstractions ADO.NET et types SqlClient
ADO.NET définit des abstractions indépendantes du fournisseur dans l’espace de noms System.Data.Common. Microsoft. Data.SqlClient fournit des implémentations concrètes.
| Abstraction de ADO.NET | type SqlClient | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Ouvre une connexion logique vers une base de données. |
| DbCommand | SqlCommand | Exécute du texte SQL ou une procédure stockée. |
| DbParameter | SqlParameter | Envoie une valeur tapée séparément du texte de commande. |
| DbDataReader | SqlDataReader | Transmet les lignes de résultat en continu depuis le serveur. |
| DbTransaction | SqlTransaction | Regroupe les commandes en une seule transaction atomique. |
| DbDataAdapter | SqlDataAdapter | Remplit et met à jour les objets déconnectés DataSet et DataTable. |
| DbBatch | SqlBatch | Envoie plusieurs commandes en un seul lot sur les frameworks cibles pris en charge. |
Programmer selon les abstractions ADO.NET lorsqu’une bibliothèque doit supporter plusieurs fournisseurs de bases de données. Utilisez les types SqlClient lorsqu’une application vise SQL Server et nécessite des fonctionnalités spécifiques à chaque fournisseur.
Accès aux données connectées
L’accès connecté maintient une connexion disponible pendant qu’une commande s’exécute et que l’application lit ses résultats.
Une demande courante suit cette séquence :
- Créez un
SqlConnectionà partir d’une chaîne de connexion. - Ouvrir la connexion.
- Créez un
SqlCommandet ajoutez des valeursSqlParameter. - Exécutez la commande.
- Traiter une valeur scalaire, un nombre de lignes affectées, ou
SqlDataReader. - Éliminez le liseur, la commande et la connexion.
Utilisez l’accès connecté pour la plupart des API web, services, travailleurs et applications en ligne de commande.
SqlDataReader streame des lignes et utilise généralement moins de mémoire que le chargement complet du résultat dans un DataSetfichier .
Ouvrir et supprimer un SqlConnection pour chaque unité de travail est le modèle habituel. Le pool de connexions réutilise la connexion physique sous-jacente. Ne laissez pas une seule connexion globale ouverte pendant toute la durée de vie d’une application.
Accès déconnecté aux données
SqlDataAdaptertransfère des données entre SQL Server et un fichier en mémoire DataSet ou DataTable. L’application peut fermer la connexion pendant qu’elle lit ou modifie les données en mémoire, puis se reconnecter pour soumettre des mises à jour.
Utilisez un accès déconnecté lorsque vous avez besoin de :
- Liaison de données à
DataSetouDataTable. - Relations et contraintes en mémoire.
- Des modifications hors ligne qui sont réconciliées plus tard.
- Compatibilité avec une application existante construite autour des DataAdapters.
Pour les nouveaux services orientés requête, commencez par SqlCommand et SqlDataReader sauf si vous avez besoin du modèle d’objets déconnectés.
Fonctionnalités spécifiques à SQL Server
Microsoft. Data.SqlClient ajoute des API et des comportements de connexion qui ne font pas partie du contrat ADO.NET indépendant du fournisseur :
- Fonctions de rappel d’authentification et de jeton d’accès Microsoft Entra.
- TDS 8.0 avec un chiffrement strict et des options de certificats SQL Server.
- Toujours des enclaves chiffrées et sécurisées.
-
SqlBulkCopypour le chargement de données à haut débit. - Paramètres valorisés par des tableaux.
- Les types de données SQL Server, y compris les types JSON et vectoriels.
- Mécanisme de nouvelle tentative configurable.
- Diagnostics, statistiques et compteurs de SQL Server.
- Groupe de disponibilité et options de connexion en bascule.
L’utilisation de ces fonctionnalités relie ce code à Microsoft. Data.SqlClient. Gardez le code spécifique au fournisseur derrière une frontière d’accès aux données si le reste de l’application doit rester indépendant du fournisseur.
Durée de vie de l’objet et concurrence
Éliminez rapidement les connexions, commandes, lecteurs, transactions et objets de copie en masse. Utiliser await using avec du code asynchrone lorsqu’un type implémente IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader, et SqlTransaction ne supportent pas l’utilisation simultanée de plusieurs threads. Donnez à chaque opération concurrente sa propre connexion et comptez sur le pooling de connexions. Multiple Active Result Sets (MARS) permet plus d’un ensemble actif de résultats sur une connexion, mais ne rend pas les objets SqlClient thread-safe.
Paquets et espaces de noms
Installez le package NuGet Microsoft.Data.SqlClient et importez l’espace de noms Microsoft.Data.SqlClient. Le pilote est livré indépendamment de .NET, donc ses fonctionnalités et ses calendriers de prise en charge diffèrent de ceux du runtime .NET.
System.Data.SqlClient est le fournisseur plus âgé. Utilisez Microsoft. Data.SqlClient pour le nouveau développement. Pour une application existante, suivez Migrer de System.Data.SqlClient vers Microsoft. Data.SqlClient.