Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ADO.NET to model dostępu do danych wbudowany w .NET. Microsoft. Data.SqlClient implementuje ten model dla baz danych zgodnych z SQL Server i dodaje możliwości specyficzne dla SQL Server.
Strona docelowa Microsoft. Data.SqlClient udostępnia mapę funkcji sterownika oraz bazę produkcyjną. Ten artykuł wyjaśnia, jak sterownik wpisuje się w ADO.NET.
Abstrakcje ADO.NET i typy SqlClient
ADO.NET definiuje abstrakcje niezależne od dostawcy w przestrzeni nazw System.Data.Common. Microsoft. Data.SqlClient dostarcza konkretne implementacje.
| Abstrakcja ADO.NET | Typ SqlClient | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Otwiera logiczne połączenie z jedną bazą danych. |
| DbCommand | SqlCommand | Wykonuje tekst SQL lub procedurę przechowywaną. |
| DbParameter | SqlParameter | Wysyła wpisaną wartość oddzielnie od tekstu polecenia. |
| DbDataReader | SqlDataReader | Strumieniuje wiersze wyników z serwera. |
| DbTransaction | SqlTransaction | Grupuje polecenia w jedną atomową transakcję. |
| DbDataAdapter | SqlDataAdapter | Wypełnia i aktualizuje odłączone obiekty DataSet i DataTable. |
| DbBatch | SqlBatch | Wysyła wiele poleceń w jednej partii w obsługiwanych platformach docelowych. |
Programuj przeciwko abstrakcjom ADO.NET, gdy biblioteka musi obsługiwać wielu dostawców baz danych. Używaj typów SqlClient, gdy aplikacja celuje w SQL Server i potrzebuje funkcji specyficznych dla dostawcy.
Dostęp do danych połączonych
Dostęp połączony utrzymuje połączenie dostępne podczas wykonywania polecenia i podczas odczytu wyników przez aplikację.
Typowe żądanie przebiega według następującej sekwencji:
- Utwórz obiekt
SqlConnectionna podstawie parametrów połączenia. - Otwórz połączenie.
- Utwórz
SqlCommandi dodaj wartościSqlParameter. - Wykonaj polecenie .
- Przetwórz wartość skalarną, liczbę zmodyfikowanych wierszy lub
SqlDataReader. - Usuń czytnik, polecenie i połączenie.
Korzystaj z dostępu połączonego do większości API webowych, usług, pracowników i aplikacji wiersza poleceń.
SqlDataReader przetwarza wiersze strumieniowo i zwykle zużywa mniej pamięci niż ładowanie całego wyniku do DataSet.
Otwieranie i usuwanie obiektu SqlConnection dla każdej jednostki pracy to typowy wzorzec. Buforowanie połączeń ponownie wykorzystuje bazowe połączenie fizyczne. Nie trzymaj jednego globalnego połączenia otwartego przez cały okres istnienia aplikacji.
Dostęp do danych bez połączenia
SqlDataAdapter przesyła dane między serwerem SQL Server a DataSet lub DataTable w pamięci. Aplikacja może zamknąć połączenie podczas odczytu lub zmiany danych w pamięci, a następnie ponownie się połączyć, aby przesłać aktualizacje.
Korzystaj z dostępu bez połączenia, gdy potrzebujesz:
- Wiązanie danych z
DataSetlubDataTable. - Relacje i ograniczenia w pamięci.
- Zmiany w trybie offline, które są później synchronizowane.
- Kompatybilność z istniejącą aplikacją opartą na DataAdapterach.
W przypadku nowych usług zorientowanych na żądania zacznij od SqlCommand i SqlDataReader, chyba że potrzebujesz rozłącznego modelu obiektów.
Specyficzne cechy SQL Server
Microsoft. Data.SqlClient dodaje API i zachowanie połączenia, które nie są częścią niezależnego od dostawcy kontraktu ADO.NET:
- Microsoft Entra – uwierzytelnianie i zwroty tokenów dostępu.
- Opcje ścisłego szyfrowania TDS 8.0 oraz certyfikatu SQL Server.
- Zawsze szyfrowane i bezpieczne enklawy.
-
SqlBulkCopydo ładowania danych o wysokiej przepustowości. - Parametry tabelaryczne.
- Typy danych SQL Server, w tym JSON i typy wektorowe.
- Konfigurowalna logika powtórek.
- Diagnostyka, statystyki i liczniki SQL Server.
- Grupa dostępności i opcje połączenia trybu failover.
Korzystanie z tych funkcji wiąże ten kod z Microsoftem. Data.SqlClient. Zachowaj kod specyficzny dla dostawcy za granicą dostępu do danych, jeśli reszta aplikacji musi pozostać niezależna od dostawcy.
Czas życia obiektu i współbieżność
Szybko usuwaj połączenia, polecenia, czytniki, transakcje i kopiuj obiekty masowo. Użyj await using w przypadku kodu asynchronicznego, gdy typ implementuje IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader oraz SqlTransaction nie obsługują współbieżnego użycia przez wiele wątków. Zapewnij każdej współbieżnej operacji osobne połączenie i korzystaj z puli połączeń. Multiple Active Result Sets (MARS) umożliwia uzyskanie więcej niż jednego aktywnego zestawu wyników w ramach jednego połączenia, ale nie sprawia, że obiekty SqlClient są bezpieczne wątkowo.
Pakiety i przestrzenie nazw
Zainstaluj pakiet NuGet Microsoft.Data.SqlClient i zaimportuj przestrzeń nazw Microsoft.Data.SqlClient. Sterownik jest dostarczany niezależnie od platformy .NET, więc jego harmonogramy udostępniania funkcji, wydań i pomocy technicznej różnią się od harmonogramów środowiska uruchomieniowego .NET.
System.Data.SqlClient to starszy dostawca. Użyj Microsoft. Data.SqlClient do nowego rozwoju. W przypadku istniejącej aplikacji postępuj zgodnie z Migracja z System.Data.SqlClient do Microsoft.Data.SqlClient.