SqlConnection Classe

Definizione

Rappresenta una connessione aperta a un database di SQL Server.Represents a connection to a SQL Server database. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable, IDisposable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable, IDisposable
type SqlConnection = class
    inherit DbConnection
    interface IDbConnection
    interface ICloneable
    interface IDisposable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable, IDisposable
Ereditarietà
Implementazioni

Esempi

Nell'esempio seguente vengono creati un SqlCommand e una SqlConnection.The following example creates a SqlCommand and a SqlConnection. Il SqlConnection viene aperto e impostato come Connection per il SqlCommand.The SqlConnection is opened and set as the Connection for the SqlCommand. Nell'esempio viene quindi chiamato ExecuteNonQuery.The example then calls ExecuteNonQuery. A tale scopo, alla ExecuteNonQuery viene passata una stringa di connessione e una stringa di query che è un'istruzione Transact-SQLTransact-SQL INSERT.To accomplish this, the ExecuteNonQuery is passed a connection string and a query string that is a Transact-SQLTransact-SQL INSERT statement. La connessione viene chiusa automaticamente quando il codice esce dal blocco using.The connection is closed automatically when the code exits the using block.

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 per un'origine dati SQL Server.A SqlConnection object represents a unique session to a SQL Server data source. Con un sistema di database client/server, equivale a una connessione di rete al server.With a client/server database system, it is equivalent to a network connection to the server. SqlConnection viene utilizzata insieme SqlDataAdapter e SqlCommand per migliorare le prestazioni durante la connessione a un database Microsoft SQL Server.SqlConnection is used together with SqlDataAdapter and SqlCommand to increase performance when connecting to a Microsoft SQL Server database. Per tutti i prodotti SQL Server di terze parti e altre origini dati supportate da OLE DB, utilizzare OleDbConnection.For all third-party SQL Server products and other OLE DB-supported data sources, use OleDbConnection.

Quando si crea un'istanza di SqlConnection, tutte le proprietà vengono impostate sui rispettivi valori iniziali.When you create an instance of SqlConnection, all properties are set to their initial values. Per un elenco di questi valori, vedere il costruttore SqlConnection.For a list of these values, see the SqlConnection constructor.

Vedere ConnectionString per un elenco delle parole chiave in una stringa di connessione.See ConnectionString for a list of the keywords in a connection string.

Se il SqlConnection esce dall'ambito, non verrà chiuso.If the SqlConnection goes out of scope, it won't be closed. Pertanto, è necessario chiudere in modo esplicito la connessione chiamando Close o Dispose.Therefore, you must explicitly close the connection by calling Close or Dispose. Close e Dispose sono funzionalmente equivalenti.Close and Dispose are functionally equivalent. Se il valore del pool di connessioni Pooling è impostato su true o yes, la connessione sottostante viene restituita al pool di connessioni.If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. D'altra parte, se Pooling è impostato su false o no, la connessione sottostante al server è effettivamente chiusa.On the other hand, if Pooling is set to false or no, the underlying connection to the server is actually closed.

Nota

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.Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Per assicurarsi che le connessioni siano sempre chiuse, aprire la connessione all'interno di un blocco di using, come illustrato nel frammento di codice seguente.To ensure that connections are always closed, open the connection inside of a using block, as shown in the following code fragment. In questo modo si garantisce che la connessione venga chiusa automaticamente quando il codice esce dal blocco.Doing so ensures that the connection is automatically closed when the code exits the block.

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

Nota

Per distribuire applicazioni a prestazioni elevate, è necessario utilizzare il pool di connessioni.To deploy high-performance applications, you must use connection pooling. Quando si usa il .NET Framework provider di dati per SQL Server, non è necessario abilitare il pool di connessioni perché il provider lo gestisce automaticamente, anche se è possibile modificare alcune impostazioni.When you use the .NET Framework Data Provider for SQL Server, you do not have to enable connection pooling because the provider manages this automatically, although you can modify some settings. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Se un SqlException viene generato dal metodo che esegue un SqlCommand, il SqlConnection rimane aperto quando il livello di gravità è 19 o inferiore.If a SqlException is generated by the method executing a SqlCommand, the SqlConnection remains open when the severity level is 19 or less. Quando il livello di gravità è maggiore o uguale a 20, il server chiude normalmente il SqlConnection.When the severity level is 20 or greater, the server ordinarily closes the SqlConnection. L'utente può tuttavia riaprire la connessione e continuare.However, the user can reopen the connection and continue.

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.An application that creates an instance of the SqlConnection object can require all direct and indirect callers to have sufficient permission to the code by setting declarative or imperative security demands. SqlConnection impone richieste di sicurezza utilizzando l'oggetto SqlClientPermission.SqlConnection makes security demands using the SqlClientPermission object. Gli utenti possono verificare che il codice disponga di autorizzazioni sufficienti utilizzando l'oggetto SqlClientPermissionAttribute.Users can verify that their code has sufficient permissions by using the SqlClientPermissionAttribute object. Gli utenti e gli amministratori possono inoltre utilizzare il Caspol. exe (strumento per i criteri di sicurezza dall'accesso di codice) per modificare i criteri di sicurezza a livello di computer, di utente e di organizzazione.Users and administrators can also use the Caspol.exe (Code Access Security Policy Tool) to modify security policy at the machine, user, and enterprise levels. Per altre informazioni, vedere Sicurezza in .NET.For more information, see Security in .NET. Per un esempio che illustra come usare le richieste di sicurezza, vedere sicurezza dall'accesso di codice e ADO.NET.For an example demonstrating how to use security demands, see Code Access Security and ADO.NET.

Per ulteriori informazioni sulla gestione di messaggi di avviso e informativi dal server, vedere eventi di connessione.For more information about handling warning and informational messages from the server, see Connection Events. Per ulteriori informazioni sugli errori e sui messaggi di errore del motore di SQL Server, vedere motore di database eventi ed errori.For more information about SQL Server engine errors and error messages, see Database Engine Events and Errors.

Attenzione

È possibile forzare TCP invece della memoria condivisa.You can force TCP instead of shared memory. È possibile eseguire questa operazione anteponendo il prefisso TCP: al nome del server nella stringa di connessione oppure è possibile usare localhost.You can do that by prefixing tcp: to the server name in the connection string or you can use localhost.

Costruttori

SqlConnection()

Inizializza una nuova istanza della classe SqlConnection.Initializes a new instance of the SqlConnection class.

SqlConnection(String)

Inizializza una nuova istanza della classe SqlConnection mediante una stringa che contiene la stringa di connessione.Initializes a new instance of the SqlConnection class when given a string that contains the connection string.

SqlConnection(String, SqlCredential)

Inizializza una nuova istanza della classe SqlConnection data una stringa di connessione, che non usa Integrated Security = true e un oggetto SqlCredential che contiene l'ID utente e la password.Initializes a new instance of the SqlConnection class given a connection string, that does not use Integrated Security = true and a SqlCredential object that contains the user ID and password.

Proprietà

AccessToken

Ottiene o imposta il token di accesso per la connessione.Gets or sets the access token for the connection.

CanRaiseEvents

Ottiene un valore che indica se il componente può generare un evento.Gets a value indicating whether the component can raise an event.

(Ereditato da Component)
ClientConnectionId

ID connessione del tentativo di connessione più recente, indipendentemente dall'esito del tentativo positivo o negativo.The connection ID of the most recent connection attempt, regardless of whether the attempt succeeded or failed.

ColumnEncryptionKeyCacheTtl

Ottiene o imposta la durata delle voci delle chiavi di crittografia nella cache delle chiavi di crittografia di colonna per la funzionalità Always Encrypted.Gets or sets the time-to-live for column encryption key entries in the column encryption key cache for the Always Encrypted feature. Il valore predefinito è 2 ore.The default value is 2 hours. 0 indica che non avviene nessuna memorizzazione nella cache.0 means no caching at all.

ColumnEncryptionQueryMetadataCacheEnabled

Ottiene o imposta un valore che indica se la memorizzazione nella cache dei metadati di query è abilitata (true) o meno (false) per le query con parametri eseguite in database con l'opzione Always Encrypted abilitata.Gets or sets a value that indicates whether query metadata caching is enabled (true) or not (false) for parameterized queries running against Always Encrypted enabled databases. Il valore predefinito è true.The default value is true.

ColumnEncryptionTrustedMasterKeyPaths

Consente di impostare un elenco di percorsi chiavi attendibili per un server di database.Allows you to set a list of trusted key paths for a database server. Se durante l'elaborazione di una query dell'applicazione il driver riceve un percorso chiave non presente nell'elenco, la query non riesce.If while processing an application query the driver receives a key path that is not on the list, the query will fail. Questa proprietà fornisce un'ulteriore protezione contro gli attacchi alla sicurezza che comportano la trasmissione di percorsi chiavi falsi da un'istanza di SQL Server compromessa causando quindi la fuga di credenziali dell'archivio chiavi.This property provides additional protection against security attacks that involve a compromised SQL Server providing fake key paths, which may lead to leaking key store credentials.

ConnectionString

Ottiene o imposta la stringa usata per aprire un database di SQL Server.Gets or sets the string used to open a SQL Server database.

ConnectionTimeout

Ottiene il tempo di attesa (in secondi) mentre si tenta di stabilire una connessione prima di terminare il tentativo e generare un errore.Gets the time to wait (in seconds) while trying to establish a connection before terminating the attempt and generating an error.

Container

Ottiene il IContainer che contiene il Component.Gets the IContainer that contains the Component.

(Ereditato da Component)
Credential

Ottiene o imposta l'oggetto SqlCredential per questa connessione.Gets or sets the SqlCredential object for this connection.

Credentials
Database

Ottiene il nome del database corrente o del database da usare dopo l'apertura della connessione.Gets the name of the current database or the database to be used after a connection is opened.

DataSource

Ottiene il nome dell'istanza di SQL Server a cui connettersi.Gets the name of the instance of SQL Server to which to connect.

DesignMode

Ottiene un valore che indica se il Component si trova in modalità progettazione.Gets a value that indicates whether the Component is currently in design mode.

(Ereditato da Component)
Events

Ottiene l'elenco dei gestori eventi allegati a questo Component.Gets the list of event handlers that are attached to this Component.

(Ereditato da Component)
FireInfoMessageEventOnUserErrors

Ottiene o imposta la proprietà FireInfoMessageEventOnUserErrors.Gets or sets the FireInfoMessageEventOnUserErrors property.

PacketSize

Ottiene le dimensioni in byte dei pacchetti di rete usati per comunicare con un'istanza di SQL Server.Gets the size (in bytes) of network packets used to communicate with an instance of SQL Server.

ServerVersion

Ottiene una stringa che contiene la versione dell'istanza di SQL Server a cui il client è connesso.Gets a string that contains the version of the instance of SQL Server to which the client is connected.

Site

Ottiene o imposta l'oggetto ISite di Component.Gets or sets the ISite of the Component.

(Ereditato da Component)
State

Indica lo stato dell'oggetto SqlConnection durante l'ultima operazione di rete eseguita sulla connessione.Indicates the state of the SqlConnection during the most recent network operation performed on the connection.

StatisticsEnabled

Se impostato su true, attiva la raccolta delle statistiche per la connessione corrente.When set to true, enables statistics gathering for the current connection.

WorkstationId

Ottiene una stringa mediante cui si identifica il client di database.Gets a string that identifies the database client.

Metodi

BeginTransaction()

Avvia una transazione di database.Starts a database transaction.

BeginTransaction(IsolationLevel)

Inizia una transazione di database con il livello di isolamento specificato.Starts a database transaction with the specified isolation level.

BeginTransaction(IsolationLevel, String)

Avvia una transazione di database con il nome della transazione e il livello di isolamento specificato.Starts a database transaction with the specified isolation level and transaction name.

BeginTransaction(String)

Avvia una transazione di database con il nome della transazione specificato.Starts a database transaction with the specified transaction name.

ChangeDatabase(String)

Modifica il database corrente per un oggetto SqlConnection aperto.Changes the current database for an open SqlConnection.

ChangePassword(String, SqlCredential, SecureString)

Modifica la password SQL Server dell'utente indicata nell'oggetto SqlCredential.Changes the SQL Server password for the user indicated in the SqlCredential object.

ChangePassword(String, String)

Sostituisce la password SQL Server dell'utente indicata nella stringa di connessione con la nuova password specificata.Changes the SQL Server password for the user indicated in the connection string to the supplied new password.

ClearAllPools()

Svuota il pool di connessioni.Empties the connection pool.

ClearPool(SqlConnection)

Svuota il pool di connessioni associato alla connessione specificata.Empties the connection pool associated with the specified connection.

Close()

Chiude la connessione al database.Closes the connection to the database. È il metodo preferito di chiusura di una connessione aperta.This is the preferred method of closing any open connection.

CreateCommand()

Crea e restituisce un oggetto SqlCommand associato all'oggetto SqlConnection.Creates and returns a SqlCommand object associated with the SqlConnection.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da Component.Releases all resources used by the Component.

(Ereditato da Component)
Dispose(Boolean)

Rilascia le risorse non gestite usate da Component e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Ereditato da Component)
EnlistDistributedTransaction(ITransaction)

Permette l'integrazione nella transazione specificata come transazione distribuita.Enlists in the specified transaction as a distributed transaction.

EnlistTransaction(Transaction)

Permette l'integrazione nella transazione specificata come transazione distribuita.Enlists in the specified transaction as a distributed transaction.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetLifetimeService()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
GetSchema()

Restituisce informazioni sullo schema per l'origine dati di questo oggetto SqlConnection.Returns schema information for the data source of this SqlConnection. Per altre informazioni sullo schema, vedere Raccolte di schemi di SQL Server.For more information about scheme, see SQL Server Schema Collections.

GetSchema(String)

Restituisce le informazioni di schema per l'origine dati dell'oggetto SqlConnection usando la stringa specificata per il nome dello schema.Returns schema information for the data source of this SqlConnection using the specified string for the schema name.

GetSchema(String, String[])

Restituisce le informazioni di schema per l'origine dati dell'oggetto SqlConnection utilizzando la stringa specificata per il nome dello schema e la matrice di stringhe specificata per i valori di restrizione.Returns schema information for the data source of this SqlConnection using the specified string for the schema name and the specified string array for the restriction values.

GetService(Type)

Consente di restituire un oggetto che rappresenta un servizio fornito da Component o dal relativo Container.Returns an object that represents a service provided by the Component or by its Container.

(Ereditato da Component)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.Obtains a lifetime service object to control the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.Creates a shallow copy of the current MarshalByRefObject object.

(Ereditato da MarshalByRefObject)
Open()

Apre una connessione a un database con le impostazioni delle proprietà specificate dalla proprietà ConnectionString.Opens a database connection with the property settings specified by the ConnectionString.

OpenAsync(CancellationToken)

Versione asincrona di Open(), che apre una connessione di database con le impostazioni di proprietà specificate dalla proprietà ConnectionString.An asynchronous version of Open(), which opens a database connection with the property settings specified by the ConnectionString. Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima che trascorra l'intervallo di timeout.The cancellation token can be used to request that the operation be abandoned before the connection timeout elapses. Le eccezioni verranno propagate tramite l'attività restituita.Exceptions will be propagated via the returned Task. Se l'intervallo di tempo di connessione trascorre senza ottenere la connessione, l'attività restituita viene contrassegnata come attività che presenta errori con un'eccezione.If the connection timeout time elapses without successfully connecting, the returned Task will be marked as faulted with an Exception. L'implementazione restituisce un'attività senza bloccare il thread chiamante per le connessioni raccolte e non raccolte.The implementation returns a Task without blocking the calling thread for both pooled and non-pooled connections.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Registra i provider dell'archivio chiavi di crittografia di colonna.Registers the column encryption key store providers.

ResetStatistics()

Se viene attivata la raccolta delle statistiche, tutti i valori vengono reimpostati su zero.If statistics gathering is enabled, all values are reset to zero.

RetrieveStatistics()

Restituisce una raccolta di statistiche sulla coppia valore/nome al momento della chiamata al metodo.Returns a name value pair collection of statistics at the point in time the method is called.

ToString()

Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component.Returns a String containing the name of the Component, if any. Questo metodo non deve essere sottoposto a override.This method should not be overridden.

(Ereditato da Component)

Eventi

Disposed

Si verifica quando il componente viene eliminato da una chiamata al metodo Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Ereditato da Component)
InfoMessage

Si verifica quando SQL Server restituisce un avviso o un messaggio informativo.Occurs when SQL Server returns a warning or informational message.

StateChange

Si verifica quando cambia lo stato della connessione.Occurs when the state of the connection changes.

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Crea un nuovo oggetto che è una copia dell'istanza corrente.Creates a new object that is a copy of the current instance.

IDbConnection.BeginTransaction()

Avvia una transazione di database.Begins a database transaction.

IDbConnection.BeginTransaction(IsolationLevel)

Avvia una transazione di database con il valore specificato di IsolationLevel.Begins a database transaction with the specified IsolationLevel value.

IDbConnection.CreateCommand()

Crea e restituisce un oggetto Command associato alla connessione.Creates and returns a Command object that is associated with the connection.

Si applica a

Vedi anche