SqlConnection Klasa

Definicja

Reprezentuje połączenie z bazą danych SQL Server. Klasa ta nie może być dziedziczona.

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 Element SqlConnection jest otwierany i ustawiany jako Connection dla parametru SqlCommand. W tym przykładzie wywołasz ExecuteNonQuerymetodę . Aby to osiągnąć, ExecuteNonQuery jest przekazywany parametry połączenia i ciąg zapytania, który jest instrukcją Transact-SQL INSERT. Połączenie jest zamykane automatycznie po wyjściu kodu z bloku using.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    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

SqlConnection Obiekt reprezentuje unikatową sesję w źródle danych SQL Server. W systemie bazy danych klienta/serwera jest on odpowiednikiem połączenia sieciowego z serwerem. SqlConnectionjest używany razem z bazą SqlDataAdapterSqlCommand danych i zwiększa wydajność podczas nawiązywania połączenia z bazą danych microsoft SQL Server. W przypadku wszystkich produktów innych firm SQL Server i innych źródeł danych obsługiwanych przez ole DB użyj polecenia OleDbConnection.

Podczas tworzenia wystąpienia SqlConnectionprogramu wszystkie właściwości są ustawione na ich wartości początkowe. Aby uzyskać listę tych wartości, zobacz SqlConnection konstruktor.

Zobacz ConnectionString listę słów kluczowych w parametry połączenia.

Jeśli zakres SqlConnection wykracza poza zakres, nie zostanie zamknięty. W związku z tym należy jawnie zamknąć połączenie przez wywołanie lub CloseDispose. 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 ustawiono wartość false lub no, połączenie bazowe z serwerem jest rzeczywiście zamknięte.

Uwaga

Zdarzenia logowania i wylogowania 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 jest rzeczywiście 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 fragmentcie kodu. Dzięki temu połączenie jest automatycznie zamykane 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

Aby wdrożyć aplikacje o wysokiej wydajności, należy użyć puli połączeń. W przypadku korzystania z dostawcy danych .NET Framework dla SQL Server nie trzeba włączać puli 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ą metodę SqlCommand, 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 wartość SqlConnection. Jednak użytkownik może ponownie otworzyć połączenie i kontynuować.

Aplikacja, która tworzy wystąpienie SqlConnection obiektu, może wymagać od wszystkich wywołań bezpośrednich i pośrednich, aby mieć wystarczające uprawnienia do kodu, ustawiając deklaratywne lub imperatywne wymagania dotyczące zabezpieczeń. SqlConnection sprawia, że wymagania dotyczące zabezpieczeń korzystają z SqlClientPermission obiektu. Użytkownicy mogą sprawdzić, czy 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 do 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 aparatu SQL Server i komunikatów o błędach, zobacz Zdarzenia i błędy aparatu bazy danych.

Przestroga

Zamiast pamięci współużytkowanej można wymusić użycie protokołu TCP. Możesz to zrobić, prefiksując tcp: do nazwy serwera w parametry połączenia lub możesz użyć hosta lokalnego.

Konstruktory

SqlConnection()

Inicjuje nowe wystąpienie klasy SqlConnection.

SqlConnection(String)

Inicjuje SqlConnection nowe wystąpienie klasy przy użyciu ciągu zawierającego parametry połączenia.

SqlConnection(String, SqlCredential)

Inicjuje nowe wystąpienie SqlConnection klasy na parametry połączenia, które nie używa Integrated Security = true obiektu zawierającego SqlCredential identyfikator użytkownika i hasło.

Właściwości

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 najnowszej 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 kolumn 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 zapytań jest włączone (true) lub nie (false) dla sparametryzowanych zapytań działających względem Always Encrypted z włączonymi bazami danych. Wartością domyślną jest true.

ColumnEncryptionTrustedMasterKeyPaths

Umożliwia ustawienie listy zaufanych ścieżek kluczy dla serwera bazy danych. Jeśli podczas przetwarzania zapytania aplikacji sterownik otrzymuje ś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 zabezpieczającymi, które obejmują naruszone SQL Server zapewniające fałszywe ścieżki 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 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 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 SQL Server, z którym jest połączony klient.

State

Wskazuje stan SqlConnection ostatniej operacji sieciowej wykonanej na połączeniu.

StatisticsEnabled

W przypadku ustawienia na wartość true, włącza zbieranie statystyk dla bieżącego połączenia.

WorkstationId

Pobiera ciąg identyfikujący klienta bazy danych.

Metody

BeginTransaction()

Uruchamia transakcję bazy danych.

BeginTransaction(IsolationLevel)

Uruchamia transakcję bazy danych z określonym poziomem izolacji.

BeginTransaction(IsolationLevel, String)

Uruchamia transakcję bazy danych z określonym poziomem izolacji i nazwą transakcji.

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 SQL Server dla użytkownika wskazanego SqlCredential w obiekcie.

ChangePassword(String, String)

Zmienia hasło SQL Server użytkownika wskazane 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)

Zwraca informacje o schemacie dla źródła SqlConnection danych przy użyciu określonego ciągu nazwy schematu.

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ń.

Open()

Otwiera połączenie bazy danych z ustawieniami właściwości określonymi przez ConnectionStringelement .

Open(SqlConnectionOverrides)

Otwiera połączenie bazy danych z ustawieniami właściwości określonymi przez ConnectionStringelement .

OpenAsync(CancellationToken)

Asynchroniczna wersja programu Open(), która otwiera połączenie bazy danych z ustawieniami właściwości określonymi przez ConnectionStringelement . Token anulowania może służyć do żądania, aby operacja została porzucona 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 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 zarejestrowani.

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 ustawieniu.

ResetStatistics()

Jeśli zbieranie statystyk jest włączone, wszystkie wartości są resetowane do zera.

RetrieveInternalInfo()

Zwraca kolekcję par wartości nazwy 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

InfoMessage

Występuje, gdy SQL Server zwraca komunikat ostrzegawczy lub informacyjny.

Jawne implementacje interfejsu

ICloneable.Clone()

Tworzy nowy obiekt, który jest kopią bieżącego wystąpienia.

Dotyczy