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. La classe non può essere ereditata.
public ref class SqlConnection sealed : System::ComponentModel::Component, ICloneable, IDisposable, System::Data::IDbConnection
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.ComponentModel.Component, ICloneable, IDisposable, System.Data.IDbConnection
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit Component
interface IDbConnection
interface IDisposable
interface ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits Component
Implements ICloneable, IDbConnection, IDisposable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- Ereditarietà
- Ereditarietà
- 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.
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();
}
}
Public Sub CreateCommand(ByVal queryString As String, _
ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Sub
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.
Note
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.
}
Note
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. |
| CanRaiseEvents |
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
| 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. |
| ConnectionString |
Ottiene o imposta la stringa utilizzata per aprire un database di SQL Server. |
| ConnectionTimeout |
Ottiene il tempo di attesa (in secondi) durante il tentativo di stabilire una connessione prima di terminare il tentativo e generare un errore. |
| Container |
Ottiene l'oggetto IContainer contenente l'oggetto Component. (Ereditato da Component) |
| 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. |
| DbProviderFactory |
Ottiene l'oggetto per l'oggetto DbProviderFactoryDbConnection. (Ereditato da DbConnection) |
| DesignMode |
Ottiene un valore che indica se è Component attualmente in modalità progettazione. (Ereditato da Component) |
| Events |
Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto . (Ereditato da Component) |
| 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. |
| ServerVersion |
Ottiene una stringa contenente la versione dell'istanza di SQL Server a cui è connesso il client. |
| Site |
Ottiene o imposta il ISite del Component. (Ereditato da Component) |
| 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 |
|---|---|
| BeginDbTransaction(IsolationLevel) |
Quando sottoposto a override in una classe derivata, avvia una transazione di database. (Ereditato da DbConnection) |
| 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 di SQL Server per l'utente indicato nella 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. |
| CreateDbCommand() |
Quando sottoposto a override in una classe derivata, crea e restituisce un DbCommand oggetto associato alla connessione corrente. (Ereditato da DbConnection) |
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| Dispose() |
Rilascia tutte le risorse usate da Component. (Ereditato da Component) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate da Component e, facoltativamente, rilascia le risorse gestite. (Ereditato da Component) |
| EnlistDistributedTransaction(ITransaction) |
Integra la transazione specificata come transazione distribuita. |
| EnlistTransaction(Transaction) |
Integra la transazione specificata come transazione distribuita. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetLifetimeService() |
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| 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. |
| GetService(Type) |
Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container. (Ereditato da Component) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| InitializeLifetimeService() |
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| OnStateChange(StateChangeEventArgs) |
Genera l'evento StateChange. (Ereditato da DbConnection) |
| Open() |
Apre una connessione di database con le impostazioni delle proprietà specificate da ConnectionString. |
| OpenAsync() |
Versione asincrona di , che apre una connessione di Open()database con le impostazioni specificate da ConnectionString. Questo metodo richiama il metodo OpenAsync(CancellationToken) virtuale con CancellationToken.None. (Ereditato da DbConnection) |
| 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. |
| RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
Registra i provider dell'archivio chiavi di crittografia della colonna. |
| ResetStatistics() |
Se la raccolta di statistiche è abilitata, tutti i valori vengono reimpostati su zero. |
| RetrieveStatistics() |
Restituisce una raccolta di coppie di valori nome di statistiche nel momento in cui viene chiamato il metodo . |
| ToString() |
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
Eventi
| Nome | Descrizione |
|---|---|
| Disposed |
Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo . (Ereditato da Component) |
| InfoMessage |
Si verifica quando SQL Server restituisce un messaggio informativo o di avviso. |
| StateChange |
Si verifica quando lo stato della connessione cambia. |
| StateChange |
Si verifica quando lo stato della connessione cambia. (Ereditato da DbConnection) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| ICloneable.Clone() |
Crea un nuovo oggetto che rappresenta una copia dell'istanza corrente. |
| IDbConnection.BeginTransaction() |
Avvia una transazione di database. |
| IDbConnection.BeginTransaction() |
Avvia una transazione di database. (Ereditato da DbConnection) |
| IDbConnection.BeginTransaction(IsolationLevel) |
Avvia una transazione di database con il valore specificato IsolationLevel . |
| IDbConnection.BeginTransaction(IsolationLevel) |
Avvia una transazione di database con il livello di isolamento specificato. (Ereditato da DbConnection) |
| IDbConnection.CreateCommand() |
Crea e restituisce un oggetto Command associato alla connessione. |
| IDbConnection.CreateCommand() |
Crea e restituisce un DbCommand oggetto associato alla connessione corrente. (Ereditato da DbConnection) |