Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ADO.NET is het data-toegangsmodel dat is ingebouwd in .NET. Microsoft. Data.SqlClient implementeert dat model voor SQL Server-compatibele databases en voegt SQL Server-specifieke mogelijkheden toe.
De Microsoft. Data.SqlClient landingspagina biedt de driverfunctiekaart en de productiebasislijn. Dit artikel legt uit hoe de driver past in ADO.NET.
ADO.NET-abstraheringen en SqlClient-typen
ADO.NET definieert provider-onafhankelijke abstracties in de System.Data.Common naamruimte. Microsoft. Data.SqlClient levert concrete implementaties.
| ADO.NET-abstractie | SqlClient-type | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Opent een logische verbinding naar één database. |
| DbCommand | SqlCommand | Voert SQL-tekst of een opgeslagen procedure uit. |
| DbParameter | SqlParameter | Stuurt een getypte waarde los van de commandotekst. |
| DbDataReader | SqlDataReader | Streamt resultaatrijen vanaf de server door. |
| DbTransaction | SqlTransaction | Groepeert commando's in één atomaire transactie. |
| DbDataAdapter | SqlDataAdapter | Vult niet-verbonden DataSet- en DataTable-objecten in en werkt deze bij. |
| DbBatch | SqlBatch | Stuurt meerdere commando's in één batch op ondersteunde doelframeworks. |
Programmeer tegen de ADO.NET-abstracties wanneer een bibliotheek meerdere databaseproviders moet ondersteunen. Gebruik de SqlClient-typen wanneer een applicatie zich richt op SQL Server en provider-specifieke functies nodig heeft.
Toegang tot verbonden gegevens
Verbonden toegang houdt een verbinding beschikbaar terwijl een commando wordt uitgevoerd en terwijl de applicatie de resultaten leest.
Een veelvoorkomend verzoek volgt deze volgorde:
- Maak op basis van een verbindingsreeks een
SqlConnectionaan. - Open de verbinding.
- Maak een
SqlCommanden voeg waarden toe.SqlParameter - Voer de opdracht uit.
- Verwerk een scalaire waarde, het aantal getroffen rijen, of
SqlDataReader. - Verwijder de lezer, commando en verbinding.
Gebruik verbonden toegang voor de meeste web-API's, diensten, werkprocessen en opdrachtregeltoepassingen.
SqlDataReader stroomt rijen en gebruikt meestal minder geheugen dan het laden van het gehele resultaat in een DataSet.
Het openen en vrijgeven van een SqlConnection voor elke werkeenheid is de gebruikelijke werkwijze. Connection pooling hergebruikt de onderliggende fysieke verbinding. Houd niet één globale verbinding open gedurende de levensduur van een applicatie.
Niet-verbonden gegevenstoegang
SqlDataAdapter verplaatst gegevens tussen SQL Server en een in-memory DataSet of DataTable. De applicatie kan de verbinding sluiten terwijl deze de gegevens in het geheugen leest of verandert, en vervolgens opnieuw verbinden om updates te verzenden.
Gebruik losgekoppelde toegang wanneer je het volgende nodig hebt:
- Gegevensbinding aan
DataSetofDataTable. - Relaties en beperkingen in het geheugen.
- Offline bewerkingen die later worden gereconcilieerd.
- Compatibiliteit met een bestaande applicatie die is gebouwd rond DataAdapters.
Voor nieuwe aanvraaggerichte services begin je met SqlCommand en SqlDataReader, tenzij je het niet-verbonden objectmodel nodig hebt.
SQL Server-specifieke functies
Microsoft. Data.SqlClient voegt API's en verbindingsgedrag toe die geen deel uitmaken van het provider-onafhankelijke ADONET-contract:
- Microsoft Entra-authenticatie en toegangstoken-callbacks.
- TDS 8.0 strikte encryptie en SQL Server-certificaatopties.
- Altijd versleutelde en beveiligde enclaves.
-
SqlBulkCopyvoor het snel laden van grote hoeveelheden gegevens. - Parameters met tabelwaarde.
- SQL Server-datatypes, inclusief JSON- en vectortypes.
- Configureerbare logica voor opnieuw proberen.
- SQL Server-diagnostiek, statistiek en tellers.
- Beschikbaarheidsgroep en failover-verbindingen.
Het gebruik van deze functies koppelt die code aan Microsoft. Data.SqlClient. Houd provider-specifieke code achter een datatoegangsgrens als de rest van de applicatie provider-onafhankelijk moet blijven.
Objectlevensduur en gelijktijdigheid
Verwijder verbindingen, commando's, lezers, transacties en kopieer objecten snel in bulk. Gebruik await using met asynchrone code wanneer een type implementeert IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader, en SqlTransaction ondersteunen geen gelijktijdig gebruik door meerdere threads. Geef elke gelijktijdige bewerking een eigen verbinding en vertrouw op verbindingspooling. Multiple Active Result Sets (MARS) staat meer dan één actieve resultaatset toe op een verbinding, maar maakt SqlClient-objecten niet thread-veilig.
Pakketten en naamruimtes
Installeer het Microsoft.Data.SqlClient NuGet-pakket en importeer de Microsoft.Data.SqlClient naamruimte. De driver wordt onafhankelijk geleverd van .NET, waardoor de functie, release en ondersteuningsschema's verschillen van de .NET-runtime.
System.Data.SqlClient is de oudere aanbieder. Gebruik Microsoft. Data.SqlClient voor nieuwe ontwikkelingen. Voor een bestaande applicatie volgt u de stappen in Migrate from System.Data.SqlClient to Microsoft.Data.SqlClient.