Sdílet prostřednictvím


SqlConnection Třída

Definice

Představuje připojení k databázi SQL Server. Tato třída se nemůže dě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. Otevře SqlConnection se a nastaví se jako Connection pro SqlCommand. Příklad pak volá ExecuteNonQuery. K tomu ExecuteNonQuery se předá připojovací řetězec a řetězec dotazu, který je příkazem Transact-SQL INSERT. Připojení se automaticky ukončí, když kód ukončí blok 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();
            }
        }
    }
}

Poznámky

Objekt SqlConnection představuje jedinečnou relaci ke zdroji dat SQL Server. U databázového systému klient/server je ekvivalentem síťového připojení k serveru. SqlConnectionse používá společně s SqlDataAdapter a SqlCommand ke zvýšení výkonu při připojování k databázi Microsoft SQL Server. 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 nástroje SqlConnectionjsou všechny vlastnosti nastaveny na jejich počáteční hodnoty. Seznam těchto hodnot najdete v konstruktoru SqlConnection .

Podívejte ConnectionString se na seznam klíčových slov v připojovací řetězec.

Pokud dojde k SqlConnection výpadku rozsahu, 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í nastavená na true nebo yes, vrátí se podkladové připojení zpět do fondu připojení. Na druhou stranu, pokud Pooling je nastaven na false nebo no, základní připojení k serveru je ve skutečnosti uzavřeno.

Poznámka

Události přihlášení a odhlášení nebudou vyvolány na serveru, pokud je připojení načteno z fondu připojení nebo vráceno do fondu připojení, protože připojení není ve skutečnosti ukončeno, jakmile se vrátí do fondu připojení. Další informace najdete v tématu SQL Server sdružování připojení (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 ukončí, když kód ukončí blok.

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

Poznámka

Pokud chcete nasadit vysoce výkonné aplikace, musíte použít sdružování připojení. Při použití zprostředkovatele dat rozhraní .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 SQL Server sdružování připojení (ADO.NET).

SqlException Pokud je vygenerován metodou, SqlCommandkterá spouští , SqlConnection zůstane otevřený, pokud je úroveň závažnosti 19 nebo nižší. 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á vytváří instanci objektu SqlConnection , může vyžadovat, aby všichni přímí a nepřímí volající měli dostatečná oprávnění ke kódu nastavením deklarativních nebo imperativních požadavků na zabezpečení. SqlConnection vytváří požadavky na zabezpečení pomocí objektu SqlClientPermission . Uživatelé můžou ověřit, že jejich kód má dostatečná oprávnění, pomocí objektu SqlClientPermissionAttribute . Uživatelé a správci můžou také pomocí nástrojeCaspol.exe (Code Access Security Policy Tool) upravovat zásady zabezpečení na úrovni počítače, uživatele a podniku. Další informace najdete v tématu Zabezpečení v .NET. Příklad použití požadavků 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 najdete v tématu Události připojení. Další informace o chybách a chybových zprávách modulu SQL Server najdete v tématu Události a chyby databázového stroje.

Upozornění

Místo sdílené paměti můžete vynutit tcp. Můžete to udělat tak, že k názvu serveru v připojovací řetězec přidáte předponu tcp: nebo můžete použít localhost.

Konstruktory

SqlConnection()

Inicializuje novou instanci SqlConnection třídy.

SqlConnection(String)

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

SqlConnection(String, SqlCredential)

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

Vlastnosti

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á označuje, zda tato SqlConnection instance podporuje DbBatch třídu.

ClientConnectionId

ID připojení posledního pokusu o připojení bez ohledu na to, jestli byl pokus úspěšný nebo neúspěšný.

ColumnEncryptionKeyCacheTtl

Získá nebo nastaví hodnotu time-to-live pro položky šifrovacího klíče sloupce v mezipaměti šifrovacího klíče sloupce pro funkci Always Encrypted. Výchozí hodnota je 2 hodiny. 0 znamená, že vůbec nedochází k ukládání do mezipaměti.

ColumnEncryptionQueryMetadataCacheEnabled

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

ColumnEncryptionTrustedMasterKeyPaths

Umožňuje nastavit seznam cest důvěryhodných klíčů pro databázový server. Pokud ovladač během zpracování dotazu aplikace obdrží cestu ke klíči, která není v seznamu, dotaz selže. Tato vlastnost poskytuje dodatečnou ochranu před útoky na zabezpečení, které zahrnují ohrožené SQL Server poskytování falešných cest klíčů, 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í SQL Server databáze.

ConnectionTimeout

Získá dobu čekání při pokusu o navázání připojení před ukončením pokusu a generování 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 SQL Server, ke které se má 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 Server, ke kterému je klient připojen.

State

Označuje stav SqlConnection během poslední síťové operace provedené na připojení.

StatisticsEnabled

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

WorkstationId

Získá řetězec, který identifikuje klienta databáze.

Metody

BeginTransaction()

Spustí transakci databáze.

BeginTransaction(IsolationLevel)

Spustí databázi transakce se zadanou úrovní izolace.

BeginTransaction(IsolationLevel, String)

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

BeginTransaction(String)

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

ChangeDatabase(String)

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

ChangePassword(String, SqlCredential, SecureString)

Změní heslo SQL Server uživatele uvedeného v objektuSqlCredential.

ChangePassword(String, String)

Změní heslo SQL Server 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()

Ukončí připojení k databázi. Toto je upřednostňovaná metoda ukončení jakéhokoli otevřeného připojení.

CreateCommand()

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

EnlistDistributedTransaction(ITransaction)

Zadává se do zadané transakce jako distribuovaná transakce.

EnlistTransaction(Transaction)

Zadává se do zadané transakce jako distribuovaná transakce.

GetSchema()

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

GetSchema(String)

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

GetSchema(String, String[])

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

Open()

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

Open(SqlConnectionOverrides)

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

OpenAsync(CancellationToken)

Asynchronní verze nástroje Open(), která otevře připojení k databázi s nastavením vlastnosti určeným ConnectionStringnástrojem . Pomocí tokenu zrušení můžete požádat o opuštění operace 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 připojení bez fondu.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

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

Předdefinované zprostředkovatelé hlavního úložiště klíčů sloupců, kteří jsou k dispozici pro Úložiště certifikátů Windows, CNG Store a CSP, jsou předem zaregistrovaní.

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Zaregistruje poskytovatele úložiště šifrovacích klíčů v SqlConnection instanci. Pokud byla 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 provede plytké kopírování slovníku, aby aplikace nemohla po nastavení změnit seznam vlastních zprostředkovatelů.

ResetStatistics()

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

RetrieveInternalInfo()

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

RetrieveStatistics()

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

Událost

InfoMessage

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

Explicitní implementace rozhraní

ICloneable.Clone()

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

Platí pro