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