Classe SqlConnection (System.Data.SqlClient)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe SqlConnection

Rappresenta una connessione aperta a un database SQL Server. La classe non può essere ereditata.

Spazio dei nomi: System.Data.SqlClient
Assembly: System.Data (in system.data.dll)

Sintassi

Visual Basic - (Dichiarazione)
Public NotInheritable Class SqlConnection
	Inherits DbConnection
	Implements ICloneable
Visual Basic (Utilizzo)
Dim instance As SqlConnection

C#
public sealed class SqlConnection : DbConnection, ICloneable
C++
public ref class SqlConnection sealed : public DbConnection, ICloneable
J#
public final class SqlConnection extends DbConnection implements ICloneable
JScript
public final class SqlConnection extends DbConnection implements ICloneable
Note

Un oggetto SqlConnection rappresenta una sessione univoca a un'origine dati SQL Server. Con un sistema database client/server, è equivalente a una connessione di rete al server. L'oggetto SqlConnection è utilizzato insieme agli oggetti SqlDataAdapter e SqlCommand per migliorare le prestazioni durante la connessione a un database Microsoft SQL Server. Per tutti i prodotti SQL Server di terze parti e per altre origini dati supportate da OLE DB, utilizzare OleDbConnection.

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

Se l'oggetto SqlConnection esula dall'ambito preposto, rimane aperto. Pertanto, è necessario chiudere in modo esplicito la connessione chiamando il metodo Close o Dispose. Close e Dispose sono equivalenti dal punto di vista funzionale. Se il valore del pool di connessioni Pooling è impostato su true o su yes, a tale pool viene restituita la connessione sottostante. D'altra parte, se Pooling è impostato su false o no, la connessione sottostante al server risulta effettivamente chiusa.

Per accertarsi che le connessioni siano sempre chiuse, aprire la connessione all'interno di un blocco using, come visualizzato nel frammento di codice riportato di seguito. Tale operazione verifica la chiusura automatica della connessione quando il codice esce dal blocco.

Visual Basic
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.
    }
NotaNota

Per distribuire applicazioni dalle prestazioni elevate, è necessario utilizzare un pool di connessioni. Quando si utilizza il provider di dati .NET Framework di SQL Server, non è necessario attivare il pool di connessioni poiché questa operazione è gestita automaticamente dal provider; è possibile comunque modificare alcune impostazioni. Per ulteriori informazioni, vedere Utilizzo del pool di connessioni.

Se un'eccezione SqlException viene generata dal metodo che esegue un oggetto SqlCommand, l'oggetto SqlConnection resta aperto quando il livello di gravità è pari a 19 o inferiore. Quando il valore del livello di gravità è 20 o superiore, in genere il server chiude l'oggetto SqlConnection. Tuttavia, l'utente può riaprire la connessione e continuare.

È possibile che un'applicazione con cui si crea un'istanza dell'oggetto SqlConnection richieda che tutti i chiamanti diretti o indiretti dispongano di autorizzazioni adeguate per il codice, con l'impostazione di richieste di protezione dichiarative o imperative. L'oggetto SqlConnection esegue richieste di protezione mediante l'oggetto SqlClientPermission. Gli utenti possono verificare che il proprio codice disponga delle autorizzazioni adeguate mediante l'oggetto SqlClientPermissionAttribute. Gli utenti e gli amministratori possono inoltre utilizzare Strumento criteri di protezione dall'accesso di codice (Caspol.exe) per modificare il criterio di protezione a livello aziendale, di utente e di computer. Per ulteriori informazioni, vedere Protezione in .NET Framework. Per un esempio di utilizzo delle richieste di protezione, vedere Protezione dall'accesso di codice e ADO.NET.

NotaNota

Se si utilizza Microsoft .NET Framework versione 1.0, il set di autorizzazioni denominate FullTrust è richiesto per connettersi a SQL Server mediante il metodo Open. Questo requisito non è applicabile se si utilizza .NET Framework versione 1.1 o versioni successive. Per ulteriori informazioni, vedere Richiesta di autorizzazioni e Set di autorizzazioni denominati.

Per ulteriori informazioni sulla gestione di messaggi di avviso e informativi dal server, vedere Utilizzo di eventi di connessione.

Esempio

Nell'esempio che segue vengono creati un oggetto SqlCommand e un oggetto SqlConnection. L'oggetto SqlConnection viene aperto e impostato come la proprietà Connection per l'oggetto SqlCommand. Nell'esempio viene quindi chiamato il metodo ExecuteNonQuery e la connessione viene chiusa. A tal fine, al metodo ExecuteNonQuery viene passata una stringa di connessione e una stringa di query che rappresenta un'istruzione Transact-SQL INSERT.

Visual Basic
Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,  
    ' you can retrieve it from a configuration file, using the
    ' System.Configuration.ConfigurationSettings.AppSettings property
    Return "Data Source=(local);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;"
End Function

C#
private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code, 
    // you can retrieve it from a configuration file, using the 
    // System.Configuration.ConfigurationSettings.AppSettings property 
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;";
}

Gerarchia di ereditarietà

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbConnection
        System.Data.SqlClient.SqlConnection
Codice thread safe

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.
Piattaforme

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

Informazioni sulla versione

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Vedere anche