SqlConnection Třída

Definice

Představuje připojení k databázi SQL Server. Tuto třídu nelze zdědit.

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
Dědičnost
SqlConnection
Implementuje

Příklady

Následující příklad vytvoří SqlCommand a .SqlConnection Je SqlConnection otevřen a nastaven jako Connection pro SqlCommand. Příklad pak volá ExecuteNonQuery. K tomu se předá ExecuteNonQuery SqlConnection a řetězec dotazu, který je příkazem Transact-SQL INSERT. Připojení se automaticky zavře, když kód ukončí 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();
            }
        }
    }
}

Poznámky

Objekt SqlConnection představuje jedinečnou relaci pro SQL Server zdroj dat. V případě databázového systému klienta nebo serveru je ekvivalentem síťového připojení k serveru. SqlConnection se používá společně s SqlDataAdapter a SqlCommand ke zvýšení výkonu při připojování k databáze Microsoft SQL Serveru. Pro všechny produkty SQL Server třetích stran a další zdroje dat podporované ole DB použijte OleDbConnection.

Při vytváření instance SqlConnection, všechny vlastnosti jsou nastaveny na jejich počáteční hodnoty. Seznam těchto hodnot naleznete v konstruktoru SqlConnection .

Seznam klíčových slov v připojovací řetězec najdete v tématu ConnectionString.

SqlConnection Pokud je rozsah mimo rozsah, nezavře se. Proto musíte připojení explicitně zavřít voláním Close nebo Dispose. Close a Dispose jsou funkčně ekvivalentní. Pokud je hodnota Pooling sdružování připojení nastavena na true hodnotu nebo yes, podkladové připojení se vrátí zpět do fondu připojení. Na druhou stranu, pokud Pooling je nastavena false nebo no, základní připojení k serveru je skutečně uzavřeno.

Note

Události přihlášení a odhlášení nebudou na serveru vyvolány, když se připojení načítá z fondu připojení nebo se do něj vrací, protože se připojení ve skutečnosti nezavře, když se vrátí. Další informace najdete v tématu Sdružování připojení k SQL Serveru (ADO.NET).

Pokud chcete zajistit, aby připojení byla vždy uzavřena, otevřete připojení uvnitř using bloku, jak je znázorněno v následujícím fragmentu kódu. Tím zajistíte, že se připojení automaticky zavře, když kód blok ukončí.

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

Note

Pokud chcete nasadit vysoce výkonné aplikace, musíte použít sdružování připojení. Pokud používáte Zprostředkovatel dat .NET Framework pro SQL Server, není nutné povolit sdružování připojení, protože zprostředkovatel to spravuje automaticky, i když můžete upravit některá nastavení. Další informace najdete v tématu Sdružování připojení k SQL Serveru (ADO.NET).

SqlException Pokud je vygenerován metodou, která spouští SqlCommand, SqlConnection zůstane otevřen, pokud je úroveň závažnosti 19 nebo menší. Pokud je úroveň závažnosti 20 nebo vyšší, server obvykle zavře SqlConnection. Uživatel ale může znovu otevřít připojení a pokračovat.

Aplikace, která vytvoří instanci objektu SqlConnection , může vyžadovat, aby všichni přímá a nepřímí volající měli dostatečná oprávnění k kódu nastavením deklarativních nebo imperativních požadavků na zabezpečení. SqlConnection zajišťuje, aby objekt používal požadavky na SqlClientPermission zabezpečení. Uživatelé můžou pomocí objektu SqlClientPermissionAttribute ověřit, že kód má dostatečná oprávnění. Uživatelé a správci můžou také použít Caspol.exe (Nástroj zásad zabezpečení přístupu kódu) k úpravě zásad zabezpečení na úrovni počítače, uživatele a podniku. Další informace naleznete v tématu Zabezpečení v .NET. Příklad ukazující, jak používat požadavky na zabezpečení, najdete v tématu Zabezpečení přístupu kódu a ADO.NET.

Další informace o zpracování upozornění a informačních zpráv ze serveru naleznete v tématu Události připojení. Další informace o chybách modulu SQL Server a chybových zprávách najdete v tématu Database Engine Události a chyby.

Upozornění

Místo sdílené paměti můžete vynutit tcp. Můžete to provést předponou tcp: na název serveru v připojovací řetězec nebo můžete použít localhost.

Konstruktory

Name Description
SqlConnection()

Inicializuje novou instanci SqlConnection třídy.

SqlConnection(String, SqlCredential)

Inicializuje novou instanci SqlConnection třídy s daným připojovacím řetězcem, který nepoužívá Integrated Security = true a SqlCredential objekt, který obsahuje ID uživatele a heslo.

SqlConnection(String)

Inicializuje novou instanci SqlConnection třídy při zadání řetězce, který obsahuje připojovací řetězec.

Vlastnosti

Name Description
AccessToken

Získá nebo nastaví přístupový token pro připojení.

AccessTokenCallback

Získá nebo nastaví zpětné volání přístupového tokenu pro připojení.

CanCreateBatch

Získá hodnotu, která určuje, zda tato SqlConnection instance podporuje DbBatch třídu.

ClientConnectionId

ID připojení posledního pokusu o připojení bez ohledu na to, jestli pokus proběhl úspěšně nebo selhal.

ColumnEncryptionKeyCacheTtl

Získá nebo nastaví hodnoty časového to-live pro položky šifrovacího klíče sloupce v mezipaměti šifrovacích klíčů sloupce pro funkci Always Encrypted . Výchozí hodnota je 2 hodiny. 0 znamená žádné ukládání do mezipaměti.

ColumnEncryptionQueryMetadataCacheEnabled

Získá nebo nastaví hodnotu, která označuje, zda je ukládání metadat dotazu do mezipaměti povoleno (true) nebo ne (false) pro parametrizované dotazy spuštěné v databázích s podporou Always Encrypted . Výchozí hodnota je true.

ColumnEncryptionTrustedMasterKeyPaths

Umožňuje nastavit seznam důvěryhodných cest klíčů pro databázový server. Pokud při zpracování dotazu aplikace ovladač obdrží cestu ke klíči, která není v seznamu, dotaz se nezdaří. Tato vlastnost poskytuje dodatečnou ochranu před útoky na zabezpečení, které zahrnují ohroženou SQL Server poskytování cest k falešným klíčům, což může vést k úniku přihlašovacích údajů úložiště klíčů.

CommandTimeout

Získá výchozí dobu čekání (v sekundách) před ukončením pokusu o spuštění příkazu a generování chyby. Výchozí hodnota je 30 sekund.

ConnectionString

Získá nebo nastaví řetězec použitý k otevření databáze SQL Serveru.

ConnectionTimeout

Získá čas čekání při pokusu o navázání připojení před ukončením pokusu a vygenerováním chyby.

Credential

Získá nebo nastaví SqlCredential objekt pro toto připojení.

Database

Získá název aktuální databáze nebo databáze, která se má použít po otevření připojení.

DataSource

Získá název instance SYSTÉMU SQL Server, ke které se chcete připojit.

FireInfoMessageEventOnUserErrors

Získá nebo nastaví FireInfoMessageEventOnUserErrors vlastnost.

PacketSize

Získá velikost (v bajtech) síťových paketů používaných ke komunikaci s instancí SQL Server.

RetryLogicProvider

Získá nebo nastaví hodnotu, která určuje SqlRetryLogicBaseProvider objekt vázaný na tento příkaz.

ServerProcessId

Získá ID procesu serveru (SPID) aktivního připojení.

ServerVersion

Získá řetězec, který obsahuje verzi instance SQL Serveru, ke které je klient připojen.

SspiContextProvider

Získá nebo nastaví SspiContextProvider instanci pro přizpůsobení kontextu SSPI. Pokud není nastavená, použije se výchozí hodnota pro platformu.

State

Označuje stav SqlConnection během poslední síťové operace prováděné s připojením.

StatisticsEnabled

Pokud je tato možnost nastavená, truepovolí shromažďování statistik pro aktuální připojení.

WorkstationId

Získá řetězec, který identifikuje databázového klienta.

Metody

Name Description
BeginTransaction()

Spustí databázovou transakci.

BeginTransaction(IsolationLevel, String)

Spustí databázovou transakci se zadanou úrovní izolace a názvem transakce.

BeginTransaction(IsolationLevel)

Spustí databázovou transakci se zadanou úrovní izolace.

BeginTransaction(String)

Spustí databázovou transakci se zadaným názvem transakce.

ChangeDatabase(String)

Změní aktuální databázi otevřeného SqlConnectionsouboru .

ChangePassword(String, SqlCredential, SecureString)

Změní heslo SQL Serveru pro uživatele uvedeného v objektu SqlCredential.

ChangePassword(String, String)

Změní SQL Server heslo pro uživatele uvedeného v připojovací řetězec na zadané nové heslo.

ClearAllPools()

Vyprázdní fond připojení.

ClearPool(SqlConnection)

Vyprázdní fond připojení přidružený k zadanému připojení.

Close()

Zavře připojení k databázi. Toto je upřednostňovaná metoda uzavření jakéhokoli otevřeného připojení.

CreateCommand()

Vytvoří a vrátí SqlCommand objekt přidružený k objektu SqlConnection.

EnlistDistributedTransaction(ITransaction)

Zapsá do zadané transakce jako distribuovanou transakci.

EnlistTransaction(Transaction)

Zapsá do zadané transakce jako distribuovanou transakci.

GetSchema()

Vrátí informace o schématu pro zdroj dat tohoto SqlConnectionobjektu . Další informace o schématu najdete v tématu SQL Server Kolekce schémat.

GetSchema(String, String[])

Vrátí informace o schématu pro zdroj dat tohoto SqlConnection pomocí zadaného řetězce pro název schématu a zadané pole řetězců pro hodnoty omezení.

GetSchema(String)

Vrátí informace o schématu pro zdroj dat tohoto SqlConnection pomocí zadaného řetězce pro název schématu.

Open()

Otevře připojení k databázi s nastavením vlastnosti určené parametrem ConnectionString.

Open(SqlConnectionOverrides)

Otevře připojení k databázi s nastavením vlastnosti určené parametrem ConnectionString.

OpenAsync(CancellationToken)

Asynchronní verze Open(), která otevře připojení databáze s nastavením vlastnosti určeného parametrem ConnectionString. Token zrušení lze použít k vyžádání, aby byla operace zrušena před vypršením časového limitu připojení. Výjimky se rozšíří prostřednictvím vrácené úlohy. Pokud časový limit připojení uplyne bez úspěšného připojení, bude vrácená úloha označena jako chybná s výjimkou. Implementace vrátí úlohu bez blokování volajícího vlákna pro připojení ve fondu i bez fondu připojení.

OpenAsync(SqlConnectionOverrides, CancellationToken)

Asynchronní verze Open(), která otevře připojení databáze s nastavením vlastnosti určeného parametrem ConnectionString. Token zrušení lze použít k vyžádání, aby byla operace zrušena před vypršením časového limitu připojení. Výjimky se rozšíří prostřednictvím vrácené úlohy. Pokud časový limit připojení uplyne bez úspěšného připojení, bude vrácená úloha označena jako chybná s výjimkou. Implementace vrátí úlohu bez blokování volajícího vlákna pro připojení ve fondu i bez fondu připojení.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Zaregistruje zprostředkovatele úložiště šifrovacích klíčů sloupce. Tato funkce by se měla v aplikaci volat jen jednou. Tím se změní kopírování slovníku tak, aby aplikace nemohla po nastavení změnit vlastní seznam zprostředkovatelů.

Předdefinovaní zprostředkovatelé úložiště hlavních klíčů, které jsou k dispozici pro Úložiště certifikátů ve Windows, úložiště CNG a CSP, jsou předem zaregistrováni.

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Zaregistruje zprostředkovatele úložiště šifrovacích klíčů v SqlConnection instanci. Pokud je tato funkce volána, budou ignorováni zprostředkovatelé zaregistrovaní pomocí statických RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) metod. Tuto funkci lze volat více než jednou. Tím se změní kopírování slovníku tak, aby aplikace nemohla po nastavení změnit vlastní seznam zprostředkovatelů.

ResetStatistics()

Pokud je povolené shromažďování statistik, všechny hodnoty se resetují na nulu.

RetrieveInternalInfo()

Vrátí kolekci párů hodnot názvu interních vlastností v okamžiku, kdy je volána metoda.

RetrieveStatistics()

Vrátí kolekci statistik v okamžiku, kdy je metoda volána, pár hodnot názvu.

Událost

Name Description
InfoMessage

Nastane, když SQL Server vrátí upozornění nebo informační zprávu.

Explicitní implementace rozhraní

Name Description
ICloneable.Clone()

Vytvoří nový objekt, který je kopií aktuální instance.

Platí pro