SqlConnection Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje połączenie z bazą danych SQL Server. Tej klasy nie można dziedziczyć.
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- Dziedziczenie
-
SqlConnection
- Implementuje
Przykłady
Poniższy przykład tworzy element SqlCommand i .SqlConnection Właściwość SqlConnection jest otwierana i ustawiana jako Connection dla elementu SqlCommand. W tym przykładzie wywołamy metodę ExecuteNonQuery. W tym celu ExecuteNonQuery jest przekazywany sqlConnection i ciąg zapytania, który jest instrukcją Transact-SQL INSERT. Połączenie jest zamykane automatycznie, gdy kod zamyka blok using.
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommand_ExecuteNonQuery
{
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
}
}
Uwagi
Obiekt SqlConnection reprezentuje unikatową sesję w źródle danych SQL Server. W przypadku systemu bazy danych klienta/serwera jest on odpowiednikiem połączenia sieciowego z serwerem. SqlConnection jest używany razem z SqlDataAdapter i SqlCommand w celu zwiększenia wydajności podczas nawiązywania połączenia z baza danych programu Microsoft SQL Server. W przypadku wszystkich produktów SQL Server innych firm i innych źródeł danych obsługiwanych przez ole db użyj OleDbConnection.
Podczas tworzenia wystąpienia SqlConnectionprogramu wszystkie właściwości są ustawiane na ich wartości początkowe. Aby uzyskać listę tych wartości, zobacz konstruktor SqlConnection.
Aby uzyskać listę słów kluczowych w parametry połączenia, zobacz ConnectionString.
SqlConnection Jeśli element wykracza poza zakres, nie zostanie zamknięty. W związku z tym należy jawnie zamknąć połączenie przez wywołanie Close metody lub Dispose.
Close i Dispose są funkcjonalnie równoważne. Jeśli wartość Pooling puli połączeń jest ustawiona na true lub yes, połączenie bazowe zostanie zwrócone z powrotem do puli połączeń. Z drugiej strony, jeśli Pooling jest ustawiona wartość false lub no, bazowe połączenie z serwerem jest rzeczywiście zamknięte.
Uwaga / Notatka
Zdarzenia logowania i wylogowywanie nie będą zgłaszane na serwerze, gdy połączenie zostanie pobrane z puli połączeń lub zwrócone do puli połączeń, ponieważ połączenie nie zostanie faktycznie zamknięte po powrocie do puli połączeń. Aby uzyskać więcej informacji, zobacz SQL Server Connection Pooling (ADO.NET).
Aby upewnić się, że połączenia są zawsze zamknięte, otwórz połączenie wewnątrz using bloku, jak pokazano w poniższym fragmentze kodu. Dzięki temu połączenie zostanie automatycznie zamknięte po zakończeniu bloku przez kod.
Using connection As New SqlConnection(connectionString)
connection.Open()
' Do work here; connection closed on following line.
End Using
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
Uwaga / Notatka
Aby wdrożyć aplikacje o wysokiej wydajności, należy użyć buforowania połączeń. W przypadku używania Dostawca danych .NET Framework dla SQL Server nie trzeba włączać buforowania połączeń, ponieważ dostawca zarządza tym automatycznie, chociaż można zmodyfikować niektóre ustawienia. Aby uzyskać więcej informacji, zobacz SQL Server Connection Pooling (ADO.NET).
SqlException Jeśli element jest generowany przez metodę wykonującą SqlCommandelement , SqlConnection pozostaje otwarty, gdy poziom ważności wynosi 19 lub mniej. Gdy poziom ważności wynosi 20 lub więcej, serwer zwykle zamyka SqlConnectionwartość . Użytkownik może jednak ponownie otworzyć połączenie i kontynuować.
Aplikacja, która tworzy wystąpienie SqlConnection obiektu, może wymagać, aby wszystkie wywołania bezpośrednie i pośrednie miały wystarczające uprawnienia do kodu, ustawiając wymagania deklaratywne lub imperatywne zabezpieczeń. SqlConnection sprawia, że wymagania dotyczące zabezpieczeń korzystają z SqlClientPermission obiektu . Użytkownicy mogą sprawdzić, czy ich kod ma wystarczające uprawnienia przy użyciu SqlClientPermissionAttribute obiektu . Użytkownicy i administratorzy mogą również używać Caspol.exe (narzędzia zasad zabezpieczeń dostępu kodu) do modyfikowania zasad zabezpieczeń na poziomie komputera, użytkownika i przedsiębiorstwa. Aby uzyskać więcej informacji, zobacz Zabezpieczenia na platformie .NET. Aby zapoznać się z przykładem użycia wymagań dotyczących zabezpieczeń, zobacz Zabezpieczenia dostępu kodu i ADO.NET.
Aby uzyskać więcej informacji na temat obsługi komunikatów ostrzegawczych i informacyjnych z serwera, zobacz Zdarzenia połączenia. Aby uzyskać więcej informacji na temat błędów i komunikatów o błędach aparatu SQL Server, zobacz Database Engine Zdarzenia i błędy.
Caution
Możesz wymusić użycie protokołu TCP zamiast pamięci udostępnionej. Można to zrobić, prefiksując tcp: do nazwy serwera w parametry połączenia lub możesz użyć hosta lokalnego.
Konstruktory
| Nazwa | Opis |
|---|---|
| SqlConnection() |
Inicjuje nowe wystąpienie klasy SqlConnection. |
| SqlConnection(String, SqlCredential) |
Inicjuje nowe wystąpienie SqlConnection klasy przy użyciu parametrów połączenia, które nie jest używane |
| SqlConnection(String) |
Inicjuje nowe wystąpienie SqlConnection klasy, gdy podane parametry połączenia zawierają parametry połączenia. |
Właściwości
| Nazwa | Opis |
|---|---|
| AccessToken |
Pobiera lub ustawia token dostępu dla połączenia. |
| AccessTokenCallback |
Pobiera lub ustawia wywołanie zwrotne tokenu dostępu dla połączenia. |
| CanCreateBatch |
Pobiera wartość wskazującą, czy to SqlConnection wystąpienie obsługuje klasę DbBatch . |
| ClientConnectionId |
Identyfikator połączenia ostatniej próby połączenia, niezależnie od tego, czy próba zakończyła się powodzeniem, czy niepowodzeniem. |
| ColumnEncryptionKeyCacheTtl |
Pobiera lub ustawia czas wygaśnięcia dla wpisów klucza szyfrowania kolumny w pamięci podręcznej klucza szyfrowania kolumny dla funkcji Always Encrypted . Wartość domyślna to 2 godziny. 0 oznacza brak buforowania w ogóle. |
| ColumnEncryptionQueryMetadataCacheEnabled |
Pobiera lub ustawia wartość wskazującą, czy buforowanie metadanych zapytania jest włączone (true), czy nie (false) dla sparametryzowanych zapytań uruchomionych w bazach danych z włączoną funkcją Always Encrypted . Wartość domyślna to true. |
| ColumnEncryptionTrustedMasterKeyPaths |
Umożliwia ustawienie listy zaufanych ścieżek kluczy dla serwera bazy danych. Jeśli podczas przetwarzania zapytania aplikacji sterownik odbiera ścieżkę klucza, która nie znajduje się na liście, zapytanie zakończy się niepowodzeniem. Ta właściwość zapewnia dodatkową ochronę przed atakami zabezpieczeń, które obejmują naruszone SQL Server dostarczanie fałszywych ścieżek kluczy, co może prowadzić do wycieku poświadczeń magazynu kluczy. |
| CommandTimeout |
Pobiera domyślny czas oczekiwania (w sekundach) przed zakończeniem próby wykonania polecenia i wygenerowaniem błędu. Wartość domyślna to 30 sekund. |
| ConnectionString |
Pobiera lub ustawia ciąg używany do otwierania bazy danych programu SQL Server. |
| ConnectionTimeout |
Pobiera czas oczekiwania podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu. |
| Credential |
Pobiera lub ustawia SqlCredential obiekt dla tego połączenia. |
| Database |
Pobiera nazwę bieżącej bazy danych lub bazy danych do użycia po otwarciu połączenia. |
| DataSource |
Pobiera nazwę wystąpienia programu SQL Server, z którym ma być nawiązane połączenie. |
| FireInfoMessageEventOnUserErrors |
Pobiera lub ustawia FireInfoMessageEventOnUserErrors właściwość . |
| PacketSize |
Pobiera rozmiar (w bajtach) pakietów sieciowych używanych do komunikowania się z wystąpieniem SQL Server. |
| RetryLogicProvider |
Pobiera lub ustawia wartość określającą SqlRetryLogicBaseProvider obiekt powiązany z tym poleceniem. |
| ServerProcessId |
Pobiera identyfikator procesu serwera (SPID) aktywnego połączenia. |
| ServerVersion |
Pobiera ciąg zawierający wersję wystąpienia programu SQL Server, z którym jest połączony klient. |
| SspiContextProvider |
Pobiera lub ustawia SspiContextProvider wystąpienie na potrzeby dostosowywania kontekstu SSPI. Jeśli nie zostanie ustawiona, zostanie użyta wartość domyślna dla platformy. |
| State |
Wskazuje stan SqlConnection ostatniej operacji sieciowej wykonywanej na połączeniu. |
| StatisticsEnabled |
Gdy jest ustawiona wartość |
| WorkstationId |
Pobiera ciąg identyfikujący klienta bazy danych. |
Metody
| Nazwa | Opis |
|---|---|
| BeginTransaction() |
Uruchamia transakcję bazy danych. |
| BeginTransaction(IsolationLevel, String) |
Uruchamia transakcję bazy danych z określonym poziomem izolacji i nazwą transakcji. |
| BeginTransaction(IsolationLevel) |
Uruchamia transakcję bazy danych z określonym poziomem izolacji. |
| BeginTransaction(String) |
Uruchamia transakcję bazy danych o określonej nazwie transakcji. |
| ChangeDatabase(String) |
Zmienia bieżącą bazę danych dla otwartego SqlConnectionpliku . |
| ChangePassword(String, SqlCredential, SecureString) |
Zmienia hasło programu SQL Server dla użytkownika wskazanego w obiekcie SqlCredential. |
| ChangePassword(String, String) |
Zmienia hasło SQL Server dla użytkownika wskazanego w parametry połączenia do podanego nowego hasła. |
| ClearAllPools() |
Opróżnia pulę połączeń. |
| ClearPool(SqlConnection) |
Opróżnia pulę połączeń skojarzona z określonym połączeniem. |
| Close() |
Zamyka połączenie z bazą danych. Jest to preferowana metoda zamykania dowolnego otwartego połączenia. |
| CreateCommand() |
Tworzy i zwraca SqlCommand obiekt skojarzony z obiektem SqlConnection. |
| EnlistDistributedTransaction(ITransaction) |
Enlists w określonej transakcji jako transakcji rozproszonej. |
| EnlistTransaction(Transaction) |
Enlists w określonej transakcji jako transakcji rozproszonej. |
| GetSchema() |
Zwraca informacje o schemacie dla źródła danych tego SqlConnectionelementu . Aby uzyskać więcej informacji na temat schematu, zobacz SQL Server Kolekcje schematów. |
| GetSchema(String, String[]) |
Zwraca informacje o schemacie dla źródła SqlConnection danych przy użyciu określonego ciągu dla nazwy schematu i określonej tablicy ciągów dla wartości ograniczeń. |
| GetSchema(String) |
Zwraca informacje o schemacie dla źródła SqlConnection danych przy użyciu określonego ciągu dla nazwy schematu. |
| Open() |
Otwiera połączenie bazy danych z ustawieniami właściwości określonymi ConnectionStringprzez . |
| Open(SqlConnectionOverrides) |
Otwiera połączenie bazy danych z ustawieniami właściwości określonymi ConnectionStringprzez . |
| OpenAsync(CancellationToken) |
Asynchroniczna wersja Open()programu , która otwiera połączenie bazy danych z ustawieniami właściwości określonymi ConnectionStringprzez element . Token anulowania może służyć do żądania porzucenia operacji przed upływem limitu czasu połączenia. Wyjątki będą propagowane za pośrednictwem zwróconego zadania. Jeśli limit czasu połączenia upłynie bez pomyślnego nawiązania połączenia, zwrócone zadanie zostanie oznaczone jako uszkodzone z wyjątkiem. Implementacja zwraca zadanie bez blokowania wątku wywołującego dla połączeń w puli i bez puli. |
| OpenAsync(SqlConnectionOverrides, CancellationToken) |
Asynchroniczna wersja Open()programu , która otwiera połączenie bazy danych z ustawieniami właściwości określonymi ConnectionStringprzez element . Token anulowania może służyć do żądania porzucenia operacji przed upływem limitu czasu połączenia. Wyjątki będą propagowane za pośrednictwem zwróconego zadania. Jeśli limit czasu połączenia upłynie bez pomyślnego nawiązania połączenia, zwrócone zadanie zostanie oznaczone jako uszkodzone z wyjątkiem. Implementacja zwraca zadanie bez blokowania wątku wywołującego dla połączeń w puli i bez puli. |
| RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Rejestruje dostawców magazynu kluczy szyfrowania kolumn. Ta funkcja powinna być wywoływana tylko raz w aplikacji. Powoduje to płytkie kopiowanie słownika, dzięki czemu aplikacja nie może zmienić listy dostawców niestandardowych po jej ustawieniu. Wbudowani dostawcy magazynu kluczy głównych kolumn, którzy są dostępni dla magazynu certyfikatów systemu Windows, magazynu CNG i dostawcy CSP są wstępnie zarejestrowane. |
| RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Rejestruje dostawców magazynu kluczy szyfrowania w wystąpieniu SqlConnection . Jeśli ta funkcja została wywołana, wszyscy dostawcy zarejestrowani przy użyciu metod statycznych RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) zostaną zignorowani. Ta funkcja może być wywoływana więcej niż raz. Powoduje to płytkie kopiowanie słownika, dzięki czemu aplikacja nie może zmienić listy dostawców niestandardowych po jej ustawieniu. |
| ResetStatistics() |
Jeśli zbieranie statystyk jest włączone, wszystkie wartości są resetowane do zera. |
| RetrieveInternalInfo() |
Zwraca kolekcję par wartości nazw właściwości wewnętrznych w momencie wywołania metody . |
| RetrieveStatistics() |
Zwraca kolekcję par wartości nazw statystyk w momencie wywołania metody . |
Zdarzenia
| Nazwa | Opis |
|---|---|
| InfoMessage |
Występuje, gdy SQL Server zwraca komunikat ostrzegawczy lub informacyjny. |
Jawne implementacje interfejsu
| Nazwa | Opis |
|---|---|
| ICloneable.Clone() |
Tworzy nowy obiekt, który jest kopią bieżącego wystąpienia. |