SqlConnection Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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á |
| 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á, |
| 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. |