SqlConnection Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una connessione a un database SQL Server. Questa classe non può essere ereditata.
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
- Ereditarietà
-
SqlConnection
- Implementazioni
Esempio
Nell'esempio seguente viene creato un SqlCommand oggetto e un oggetto SqlConnection. L'oggetto SqlConnection viene aperto e impostato come per Connection .SqlCommand L'esempio chiama ExecuteNonQueryquindi . A tale scopo, l'ExecuteNonQuery viene passato a SqlConnection e a una stringa di query che è un'istruzione INSERT Transact-SQL. La connessione viene chiusa automaticamente quando il codice esce dal blocco 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();
}
}
}
}
Commenti
Un oggetto SqlConnection rappresenta una sessione univoca di un'origine dati SQL Server. Con un sistema di database client/server, equivale a una connessione di rete al server. SqlConnection viene usato insieme a SqlDataAdapter e SqlCommand per migliorare le prestazioni durante la connessione a un database di Microsoft SQL Server. Per tutti i prodotti SQL Server di terze parti e altre origini dati supportate da OLE DB, usare OleDbConnection.
Quando si crea un'istanza di SqlConnection, tutte le proprietà vengono impostate su valori iniziali. Per un elenco di questi valori, vedere il SqlConnection costruttore.
Per un elenco delle parole chiave in un stringa di connessione, vedere ConnectionString.
Se l'oggetto esce dall'ambito SqlConnection , non verrà chiuso. Pertanto, è necessario chiudere in modo esplicito la connessione chiamando Close o Dispose.
Close e Dispose sono equivalenti a livello funzionale. Se il valore Pooling del pool di connessioni è impostato su true o yes, la connessione sottostante viene restituita al pool di connessioni. D'altra parte, se Pooling è impostato su false o no, la connessione sottostante al server viene effettivamente chiusa.
Annotazioni
Nel server non vengono generati eventi di accesso e di disconnessione quando una connessione viene recuperata dal o restituita al pool di connessioni, in quanto la connessione non viene effettivamente chiusa quando viene restituita al pool di connessioni. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).
Per assicurarsi che le connessioni siano sempre chiuse, aprire la connessione all'interno di un using blocco, come illustrato nel frammento di codice seguente. In questo modo si garantisce che la connessione venga chiusa automaticamente quando il codice esce dal blocco.
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.
}
Annotazioni
Per distribuire applicazioni ad alte prestazioni, è necessario usare il pool di connessioni. Quando si usa il provider di dati framework di .NET per SQL Server, non è necessario abilitare il pool di connessioni perché il provider gestisce automaticamente questa impostazione, anche se è possibile modificare alcune impostazioni. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).
Se un SqlException oggetto viene generato dal metodo che esegue un SqlCommandoggetto , rimane SqlConnection aperto quando il livello di gravità è 19 o minore. Quando il livello di gravità è 20 o superiore, il server in genere chiude .SqlConnection Tuttavia, l'utente può riaprire la connessione e continuare.
Un'applicazione che crea un'istanza dell'oggetto SqlConnection può richiedere a tutti i chiamanti diretti e indiretti di disporre di autorizzazioni sufficienti per il codice impostando richieste di sicurezza dichiarative o imperative. SqlConnection rende richieste di sicurezza usando l'oggetto SqlClientPermission . Gli utenti possono verificare che il codice disponga di autorizzazioni sufficienti usando l'oggetto SqlClientPermissionAttribute . Gli utenti e gli amministratori possono anche usare il Caspol.exe (Strumento criteri di sicurezza dall'accesso di codice) per modificare i criteri di sicurezza a livello di computer, utente e organizzazione. Per altre informazioni, vedere Sicurezza in .NET. Per un esempio che illustra come usare le richieste di sicurezza, vedere Sicurezza dall'accesso al codice e ADO.NET.
Per altre informazioni sulla gestione di messaggi informativi e di avviso dal server, vedere Eventi di connessione. Per altre informazioni sugli errori del motore di SQL Server e sui messaggi di errore, vedere motore di database Eventi ed errori.
Caution
È possibile forzare TCP anziché la memoria condivisa. A tale scopo, è possibile usare il prefisso tcp: al nome del server nel stringa di connessione oppure è possibile usare localhost.
Costruttori
| Nome | Descrizione |
|---|---|
| SqlConnection() |
Inizializza una nuova istanza della classe SqlConnection. |
| SqlConnection(String, SqlCredential) |
Inizializza una nuova istanza della SqlConnection classe in base a una stringa di connessione, che non usa |
| SqlConnection(String) |
Inizializza una nuova istanza della SqlConnection classe quando viene specificata una stringa contenente la stringa di connessione. |
Proprietà
| Nome | Descrizione |
|---|---|
| AccessToken |
Ottiene o imposta il token di accesso per la connessione. |
| AccessTokenCallback |
Ottiene o imposta il callback del token di accesso per la connessione. |
| CanCreateBatch |
Ottiene un valore che indica se questa SqlConnection istanza supporta la DbBatch classe . |
| ClientConnectionId |
ID connessione del tentativo di connessione più recente, indipendentemente dal fatto che il tentativo abbia avuto esito positivo o negativo. |
| ColumnEncryptionKeyCacheTtl |
Ottiene o imposta la durata per le voci della chiave di crittografia della colonna nella cache delle chiavi di crittografia della colonna per la funzionalità Always Encrypted . Il valore predefinito è 2 ore. 0 significa che non viene eseguita alcuna memorizzazione nella cache. |
| ColumnEncryptionQueryMetadataCacheEnabled |
Ottiene o imposta un valore che indica se la memorizzazione nella cache dei metadati delle query è abilitata (true) o meno (false) per le query con parametri in esecuzione nei database abilitati per Always Encrypted . Il valore predefinito è true. |
| ColumnEncryptionTrustedMasterKeyPaths |
Consente di impostare un elenco di percorsi principali attendibili per un server di database. Se durante l'elaborazione di una query dell'applicazione il driver riceve un percorso chiave non incluso nell'elenco, la query avrà esito negativo. Questa proprietà offre una protezione aggiuntiva contro gli attacchi di sicurezza che comportano un SQL Server compromesso fornendo percorsi di chiave falsi, che possono causare perdite di credenziali dell'archivio chiavi. |
| CommandTimeout |
Ottiene il tempo di attesa predefinito (in secondi) prima di terminare il tentativo di eseguire un comando e generare un errore. Il valore predefinito è 30 secondi. |
| ConnectionString |
Ottiene o imposta la stringa utilizzata per aprire un database di SQL Server. |
| ConnectionTimeout |
Ottiene il tempo di attesa durante il tentativo di stabilire una connessione prima di terminare il tentativo e generare un errore. |
| Credential |
Ottiene o imposta l'oggetto SqlCredential per questa connessione. |
| Database |
Ottiene il nome del database corrente o del database da utilizzare dopo l'apertura di una connessione. |
| DataSource |
Ottiene il nome dell'istanza di SQL Server a cui connettersi. |
| FireInfoMessageEventOnUserErrors |
Ottiene o imposta la FireInfoMessageEventOnUserErrors proprietà . |
| PacketSize |
Ottiene le dimensioni in byte dei pacchetti di rete utilizzati per comunicare con un'istanza di SQL Server. |
| RetryLogicProvider |
Ottiene o imposta un valore che specifica l'oggetto SqlRetryLogicBaseProvider associato a questo comando. |
| ServerProcessId |
Ottiene l'ID del processo server (SPID) della connessione attiva. |
| ServerVersion |
Ottiene una stringa contenente la versione dell'istanza di SQL Server a cui è connesso il client. |
| SspiContextProvider |
Ottiene o imposta l'istanza SspiContextProvider di per personalizzare il contesto SSPI. Se non è impostato, verrà usato il valore predefinito per la piattaforma. |
| State |
Indica lo stato di SqlConnection durante l'operazione di rete più recente eseguita sulla connessione. |
| StatisticsEnabled |
Se impostato su |
| WorkstationId |
Ottiene una stringa che identifica il client di database. |
Metodi
| Nome | Descrizione |
|---|---|
| BeginTransaction() |
Avvia una transazione di database. |
| BeginTransaction(IsolationLevel, String) |
Avvia una transazione di database con il livello di isolamento e il nome della transazione specificati. |
| BeginTransaction(IsolationLevel) |
Avvia una transazione di database con il livello di isolamento specificato. |
| BeginTransaction(String) |
Avvia una transazione di database con il nome della transazione specificato. |
| ChangeDatabase(String) |
Modifica il database corrente per un oggetto aperto SqlConnection. |
| ChangePassword(String, SqlCredential, SecureString) |
Modifica la password di SQL Server per l'utente indicato nell'oggetto SqlCredential. |
| ChangePassword(String, String) |
Modifica la password SQL Server per l'utente indicato nel stringa di connessione alla nuova password specificata. |
| ClearAllPools() |
Svuota il pool di connessioni. |
| ClearPool(SqlConnection) |
Svuota il pool di connessioni associato alla connessione specificata. |
| Close() |
Chiude la connessione al database. Questo è il metodo preferito per chiudere qualsiasi connessione aperta. |
| CreateCommand() |
Crea e restituisce un SqlCommand oggetto associato all'oggetto SqlConnection. |
| EnlistDistributedTransaction(ITransaction) |
Integra la transazione specificata come transazione distribuita. |
| EnlistTransaction(Transaction) |
Integra la transazione specificata come transazione distribuita. |
| GetSchema() |
Restituisce informazioni sullo schema per l'origine dati di questo SqlConnectionoggetto . Per altre informazioni sullo schema, vedere SQL Server Raccolte schemi. |
| GetSchema(String, String[]) |
Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema e la matrice di stringhe specificata per i valori di restrizione. |
| GetSchema(String) |
Restituisce informazioni sullo schema per l'origine dati di utilizzando SqlConnection la stringa specificata per il nome dello schema. |
| Open() |
Apre una connessione di database con le impostazioni delle proprietà specificate da ConnectionString. |
| Open(SqlConnectionOverrides) |
Apre una connessione di database con le impostazioni delle proprietà specificate da ConnectionString. |
| OpenAsync(CancellationToken) |
Versione asincrona di , che apre una connessione di Open()database con le impostazioni delle proprietà specificate da ConnectionString. Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima del timeout della connessione. Le eccezioni verranno propagate tramite l'attività restituita. Se il tempo di timeout della connessione è trascorso senza connettersi correttamente, l'attività restituita verrà contrassegnata come difettosa con un'eccezione. L'implementazione restituisce un'attività senza bloccare il thread chiamante per le connessioni in pool e non in pool. |
| OpenAsync(SqlConnectionOverrides, CancellationToken) |
Versione asincrona di , che apre una connessione di Open()database con le impostazioni delle proprietà specificate da ConnectionString. Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima del timeout della connessione. Le eccezioni verranno propagate tramite l'attività restituita. Se il tempo di timeout della connessione è trascorso senza connettersi correttamente, l'attività restituita verrà contrassegnata come difettosa con un'eccezione. L'implementazione restituisce un'attività senza bloccare il thread chiamante per le connessioni in pool e non in pool. |
| RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Registra i provider dell'archivio chiavi di crittografia della colonna. Questa funzione deve essere chiamata una sola volta in un'app. Questa operazione esegue la copia superficiale del dizionario in modo che l'app non possa modificare l'elenco di provider personalizzato dopo che è stato impostato. I provider di archivi chiavi master di colonna predefiniti disponibili per l'archivio certificati di Windows, l'archivio CNG e CSP sono preregistrati. |
| RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Registra i provider dell'archivio chiavi di crittografia nell'istanza SqlConnection di . Se questa funzione è stata chiamata, tutti i provider registrati usando i metodi statici RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) verranno ignorati. Questa funzione può essere chiamata più volte. Questa operazione esegue la copia superficiale del dizionario in modo che l'app non possa modificare l'elenco di provider personalizzato dopo che è stato impostato. |
| ResetStatistics() |
Se la raccolta di statistiche è abilitata, tutti i valori vengono reimpostati su zero. |
| RetrieveInternalInfo() |
Restituisce una raccolta di coppie di valori nome di proprietà interne nel momento in cui viene chiamato il metodo . |
| RetrieveStatistics() |
Restituisce una raccolta di coppie di valori nome di statistiche nel momento in cui viene chiamato il metodo . |
Eventi
| Nome | Descrizione |
|---|---|
| InfoMessage |
Si verifica quando SQL Server restituisce un messaggio informativo o di avviso. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| ICloneable.Clone() |
Crea un nuovo oggetto che rappresenta una copia dell'istanza corrente. |