SqlConnection Classe

Definizione

Rappresenta una connessione aperta a un database di SQL Server. La 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 SqlConnectionoggetto . L'oggetto SqlConnection viene aperto e impostato come Connection oggetto per .SqlCommand L'esempio chiama ExecuteNonQueryquindi . A tale scopo, viene passato un stringa di connessione e una stringa di query che è un'istruzione ExecuteNonQuery Transact-SQL INSERT. La connessione viene chiusa automaticamente quando il codice termina con il blocco 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();
            }
        }
    }
}

Commenti

Un SqlConnection oggetto rappresenta una sessione univoca a un'origine dati SQL Server. Con un sistema di database client/server, equivale a una connessione di rete al server. SqlConnectionviene usato insieme SqlDataAdapter a e SqlCommand per aumentare le prestazioni durante la connessione a un database di SQL Server Microsoft. Per tutti i prodotti di terze parti SQL Server e altre origini dati supportate da OLE DB, usare OleDbConnection.

Quando si crea un'istanza di SqlConnection, tutte le proprietà vengono impostate sui valori iniziali. Per un elenco di questi valori, vedere il SqlConnection costruttore.

Vedere ConnectionString per un elenco delle parole chiave in un stringa di connessione.

Se l'ambito 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.

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

Nota

Per distribuire applicazioni ad alte prestazioni, è necessario usare il pool di connessioni. Quando si usa il provider di dati .NET Framework per SQL Server, non è necessario abilitare il pool di connessioni perché il provider gestisce automaticamente questa operazione, 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 chiude normalmente .SqlConnection L'utente può tuttavia 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 di accesso al codice) per modificare i criteri di sicurezza nel computer, nell'utente e nei livelli aziendali. Per altre informazioni, vedere Sicurezza in .NET. Per un esempio che illustra come usare le richieste di sicurezza, vedere Sicurezza di accesso al codice e ADO.NET.

Per altre informazioni sulla gestione degli avvisi e dei messaggi informativi dal server, vedere Eventi di connessione. Per altre informazioni sugli errori del motore di SQL Server e sui messaggi di errore, vedere Eventi e errori del motore di database.

Attenzione

È possibile forzare TCP anziché la memoria condivisa. È possibile eseguire questa operazione prefissendo tcp: al nome del server nella stringa di connessione o è possibile usare localhost.

Costruttori

SqlConnection()

Inizializza una nuova istanza della classe SqlConnection.

SqlConnection(String)

Inizializza una nuova istanza della classe SqlConnection mediante una stringa che contiene la stringa di connessione.

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.

Proprietà

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 istanza di SqlConnection supporta la classe DbBatch.

ClientConnectionId

ID connessione del tentativo di connessione più recente, indipendentemente dall'esito del tentativo positivo o negativo.

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. Il valore predefinito è 2 ore. 0 indica che non avviene nessuna memorizzazione nella cache.

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. 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 presente nell'elenco, la query non riesce. Questa proprietà fornisce un’ulteriore protezione da attacchi alla sicurezza in cui un SQL Server compromesso fornisce falsi percorsi chiavi. Questo potrebbe causare la perdita delle credenziali dell’archivio di 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 usata per aprire un database di SQL Server.

ConnectionTimeout

Ottiene il tempo di attesa relativo al 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 usare dopo l'apertura della connessione.

DataSource

Ottiene il nome dell'istanza di SQL Server a cui connettersi.

FireInfoMessageEventOnUserErrors

Ottiene o imposta la proprietà FireInfoMessageEventOnUserErrors.

PacketSize

Ottiene le dimensioni in byte dei pacchetti di rete usati 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 che contiene la versione dell'istanza di SQL Server a cui il client è connesso.

State

Indica lo stato dell'oggetto SqlConnection durante l'ultima operazione di rete eseguita sulla connessione.

StatisticsEnabled

Se impostato su true, attiva la raccolta delle statistiche per la connessione corrente.

WorkstationId

Ottiene una stringa mediante cui si identifica il client di database.

Metodi

BeginTransaction()

Avvia una transazione di database.

BeginTransaction(IsolationLevel)

Inizia una transazione di database con il livello di isolamento specificato.

BeginTransaction(IsolationLevel, String)

Avvia una transazione di database con il nome della transazione e 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 SqlConnection aperto.

ChangePassword(String, SqlCredential, SecureString)

Modifica la password SQL Server dell'utente indicata nell'oggetto SqlCredential.

ChangePassword(String, String)

Sostituisce la password SQL Server dell'utente indicata nella stringa di connessione con la 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. È il metodo preferito di chiusura di una connessione aperta.

CreateCommand()

Crea e restituisce un oggetto SqlCommand associato all'oggetto SqlConnection.

EnlistDistributedTransaction(ITransaction)

Permette l'integrazione nella transazione specificata come transazione distribuita.

EnlistTransaction(Transaction)

Permette l'integrazione nella transazione specificata come transazione distribuita.

GetSchema()

Restituisce informazioni sullo schema per l'origine dati di questo oggetto SqlConnection. Per altre informazioni sullo schema, vedere Raccolte di schemi di SQL Server.

GetSchema(String)

Restituisce le informazioni di schema per l'origine dati dell'oggetto SqlConnection usando la stringa specificata per il nome dello schema.

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.

Open()

Apre una connessione a un database con le impostazioni delle proprietà specificate dalla proprietà ConnectionString.

Open(SqlConnectionOverrides)

Apre una connessione a un database con le impostazioni delle proprietà specificate dalla proprietà ConnectionString.

OpenAsync(CancellationToken)

Versione asincrona di Open(), che apre una connessione di database con le impostazioni di proprietà specificate dalla proprietà ConnectionString. Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima che trascorra l'intervallo di timeout. Le eccezioni verranno propagate tramite l'attività restituita. 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. L'implementazione restituisce un'attività senza bloccare il thread chiamante per le connessioni raccolte e non raccolte.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Registra i provider dell'archivio chiavi di crittografia di colonna. Questa funzione deve essere chiamata una sola volta in un'app. Questa operazione esegue una copia superficiale del dizionario in modo che l'app non possa modificare l'elenco di provider personalizzati 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 di archivi chiavi di crittografia nell'istanza SqlConnection . 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 una copia superficiale del dizionario in modo che l'app non possa modificare l'elenco di provider personalizzati dopo che è stato impostato.

ResetStatistics()

Se viene attivata la raccolta delle statistiche, tutti i valori vengono reimpostati su zero.

RetrieveInternalInfo()

Restituisce una raccolta di coppie di valori nome delle proprietà interne al momento della chiamata al metodo.

RetrieveStatistics()

Restituisce una raccolta di statistiche sulla coppia valore/nome al momento della chiamata al metodo.

Eventi

InfoMessage

Si verifica quando SQL Server restituisce un avviso o un messaggio informativo.

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Crea un nuovo oggetto che è una copia dell'istanza corrente.

Si applica a