Una stringa di connessione contiene informazioni di inizializzazione che vengono passate come parametro a un'origine dati. La stringa di connessione viene analizzata immediatamente dopo l'impostazione. Gli errori di sintassi generano un'eccezione di runtime, ma altri tipi di errore possono essere rilevati solo dopo che l'origine dati ha convalidato le informazioni della stringa di connessione. Una volta eseguita la convalida, l'origine dati imposta varie opzioni per attivare la connessione.
Parole chiave della stringa di connessione
Il formato di una stringa di connessione è un elenco delimitato da punti e virgola composto da coppie di parametri chiave/valore:
keyword1=value; keyword2=value
Gli spazi sono ignorati e per le parole chiave non viene rilevata la differenza tra maiuscole e minuscole. Per i valori, invece, tale differenza può essere rilevata a seconda dell'origine dati. Per inserire valori che contengono punto e virgola, virgolette singole o virgolette doppie, è necessario racchiuderli tra virgolette doppie.
La sintassi di una stringa di connessione valida varia a seconda del provider e, nel corso degli anni, si è evoluta dalle API iniziali quali ODBC. Il provider di dati .NET Framework per SQL Server incorpora molti elementi della sintassi precedente e, in genere, presenta una sintassi della stringa di connessione comune più flessibile. Per ulteriori informazioni sulle parole chiave delle stringhe di connessione per i provider di dati .NET, vedere ConnectionString, ConnectionString, ConnectionString e ConnectionString.
Persist Security Info
L'impostazione predefinita per la parola chiave Persist Security Info in una stringa di connessione è false.
Persist Security Info=false;
Se si imposta la parola chiave su true o yes, sarà possibile ottenere informazioni riservate, compresi l'ID utente e la password, dalla connessione dopo che questa è stata aperta. Se è necessario fornire l'ID utente e la password quando si effettua una connessione, si otterrà il massimo livello di protezione se tali informazioni verranno eliminate dopo che sono state utilizzate per la connessione, ad esempio quando Persist Security Info è impostato su false o su no. Tale scelta diventa ancora più importante se si fornisce una connessione aperta a una fonte non attendibile o se le informazioni di connessione sono conservate sul disco. Se si imposta Persist Security Info su false, si impedisce che la fonte non attendibile abbia accesso alle informazioni riservate relative alla connessione e si assicura inoltre che le informazioni riservate non verranno salvate su disco insieme alla stringa di connessione.
Utilizzo dell'autenticazione Windows
Si consiglia di utilizzare l'autenticazione Windows, definita in genere protezione integrata, per eseguire la connessione ai database dei server. Per specificare l'autenticazione Windows, è possibile utilizzare una delle seguenti coppie chiave/valore con il provider di dati .NET Framework per SQL Server:
Integrated Security=true;
Integrated Security=SSPI;
Tuttavia, solo la seconda funzionerà con il provider di dati .NET Framework per OleDb. Se si imposta Integrated Security=true in una proprietà ConnectionString, verrà generata un'eccezione.
Per specificare l'autenticazione Windows, è necessario utilizzare la seguente coppia chiave/valore per il provider di dati .NET Framework per ODBC.
Creazione di stringhe di connessione
Archiviazione e recupero di stringhe di connessione
Si consiglia di non incorporare stringhe di connessione nel codice. Se la posizione del server viene modificata, è necessario compilare nuovamente l'applicazione. Inoltre, le stringhe di connessione non crittografate compilate in un codice sorgente dell'applicazione possono essere visualizzate con Disassembler MSI (ildasm.exe).
Archiviazione di stringhe di connessione in file di configurazione
Per impedire l'archiviazione delle stringhe di connessione nel codice, è possibile archiviarle nel file web.config per un'applicazione ASP.NET e nel file app.config per un'applicazione Windows.
È possibile archiviare la stringa di connessione nel file di configurazione nell'elemento <connectionStrings>. Le stringhe di connessione vengono archiviate come coppie chiave/valore, in cui il nome può essere utilizzato per ricercare il valore archiviato nell'attributo connectionString in fase di esecuzione. Nell'esempio di file di configurazione seguente viene illustrata una stringa di connessione denominata DatabaseConnection che fa riferimento a un'istanza locale di SQL Server.
<connectionStrings>
<add name="DatabaseConnection"
connectionString="Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local);"
providerName="System.Data.SqlClient" />
</connectionStrings>
Recupero di stringhe di connessione da file di configurazione
Lo spazio dei nomi System.Configuration fornisce le classi da utilizzare con le informazioni di configurazione archiviate nei file di configurazione. Per la classe ConnectionStringSettings sono disponibili due proprietà che sono associate ai nomi indicati in precedenza nella sezione di esempio <connectionStrings>.
- ConnectionString
-
Stringa di connessione.
- Name
-
Nome della stringa di connessione nella sezione <connectionStrings>.
Esempio
Nell'esempio seguente la stringa di connessione viene recuperata dal file di configurazione passando il nome della stringa stessa all'oggetto ConfigurationManager, che restituisce un oggetto ConnectionStringSettings. La proprietà ConnectionString viene utilizzata per visualizzare il valore.
Option Explicit On
Option Strict On
Imports System.Configuration
Module Module1
Sub Main()
Dim settings As ConnectionStringSettings
settings = _
ConfigurationManager.ConnectionStrings("DatabaseConnection")
If Not settings Is Nothing Then
Console.WriteLine(settings.ConnectionString)
End If
End Sub
End Module
using System;
using System.Configuration;
class Program
{
static void Main()
{
ConnectionStringSettings settings;
settings =
ConfigurationManager.ConnectionStrings["DatabaseConnection"];
if (settings != null)
{
Console.WriteLine(settings.ConnectionString);
}
}
}
Stringhe di connessione SqlClient
La proprietà ConnectionString di una SqlConnection consente di recuperare o impostare una stringa di connessione per un database SQL Server 7.0 o versione successiva. Per eseguire la connessione a una versione precedente di SQL Server, utilizzare il provider di dati .NET per OleDb.
Sintassi della stringa di connessione SqlClient
La sintassi per la connessione a un database SQL Server è flessibile. Tutte le seguenti forme di sintassi utilizzeranno la protezione integrata per connettersi al database AdventureWorks su un server locale. Specificare sempre il server per nome oppure tramite la parola chiave (local).
"Persist Security Info=False;Integrated Security=true;Initial Catalog=AdventureWorks;Server=MSSQL1"
"Persist Security Info=False;Integrated Security=SSPI;database=AdventureWorks;server=(local)"
"Persist Security Info=False;Trusted_Connection=True;database=AdventureWorks;server=(local)"
Per imporre un protocollo, aggiungere uno o più dei seguenti prefissi:
np:(local), tcp:(local), lpc:(local)
Per l'autenticazione di SQL Server, utilizzare questa sintassi per specificare un nome utente e una password. Gli asterischi indicano un nome utente e una password validi.
"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer"
Per visualizzare un elenco completo di parole chiave valide delle stringhe di connessione, vedere ConnectionString.
Connessione a istanze denominate
Per connettersi a un'istanza denominata di SQL Server 2000 o versioni successive, utilizzare la sintassi nome server\nome istanza.
Server=MySqlServer\MSSQL1;"
Impostazione della libreria di rete
Utilizzare questa sintassi per eseguire la connessione utilizzando un indirizzo IP. La libreria di rete è Win32 Winsock TCP/IP e 1433 è la porta utilizzata (impostazione predefinita).
Network Library=dbmssocn;Data Source=000.000.000.000,1433;
Quando si stabilisce una connessione, SQL Server consente di utilizzare le seguenti librerie di rete.
- dbnmpntw
-
Win32 Named Pipes
- dbmssocn
-
Win32 Winsock TCP/IP
- dbmsspxn
-
Win32 SPX/IPX
- dbmsvinn
-
Win32 Banyan Vines
- dbmsrpcn
-
Win32 Multi-Protocol (Windows RPC)
Stringhe di connessione OleDb
La proprietà ConnectionString di un tipo OleDbConnection consente di recuperare o impostare una stringa di connessione per un'origine dati OLE DB quale Microsoft Access o SQL Server 6.5 o versioni precedenti. Utilizzare un tipo SqlConnection per SQL Server 7.0 o versioni successive.
Sintassi della stringa di connessione OleDb
È necessario specificare il nome di un provider per una stringa di connessione OleDbConnection. La seguente stringa di connessione si connette a un database Microsoft Access utilizzando il provider Jet. Notare che le parole chiave UserID e Password sono facoltative se il database non è protetto (impostazione predefinita).
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=;
Se il database è protetto, è possibile fornire la posizione del file di informazioni sul gruppo di lavoro.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;
Utilizzare la parola chiave sqloledb per SQL Server 6.5 o versioni precedenti.
Provider=sqloledb;Data Source=MySqlServer;Initial Catalog=pubs;User Id=*****;Password=*****;
Non utilizzare file collegamento dati universali (UDL, Universal Data Link)
È possibile fornire informazioni di connessione per un oggetto OleDbConnection in un file UDL (Universal Data Link). Si consiglia, tuttavia, di evitare questa procedura. I file UDL non sono crittografati, pertanto espongono le informazioni nella stringa di connessione come testo non crittografato. Poiché per l'applicazione si tratta di una risorsa esterna basata su file, un file UDL non può essere protetto tramite .NET Framework.
Connessione a Excel
Il provider Microsoft Jet viene utilizzato per la connessione a una cartella di lavoro Excel. Nella seguente stringa di connessione la parola chiave Extended Properties imposta le proprietà specifiche di Excel. "HDR=Yes;" indica che la prima riga contiene nomi di colonne e non dati, mentre "IMEX=1;" indica al driver di leggere sempre come testo colonne di dati misti. Notare che
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""
Notare che le virgolette doppie richieste per le Extended Properties devono essere racchiuse a loro volta tra virgolette doppie.
Sintassi della stringa di connessione di Data Shape Provider
Con Microsoft Data Shape Provider, utilizzare le parole chiave Provider e Data Provider. Nell'esempio seguente viene utilizzato Microsoft Data Shape Provider per eseguire la connessione a un'istanza locale di SQL Server.
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"
Stringhe di connessione Odbc
La proprietà ConnectionString di un tipo OdbcConnection consente di ottenere o impostare una stringa di connessione per un'origine dati OLE DB. Nella seguente stringa di connessione viene utilizzato il driver Microsoft per file di testo.
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin
Per ulteriori informazioni sulla sintassi della stringa di connessione ODBC, vedere ConnectionString.
Stringhe di connessione Oracle
La proprietà ConnectionString di un tipo OracleConnection consente di recuperare o impostare una stringa di connessione per un'origine dati OLE DB.
Data Source=Oracle9i;User ID=*****;Password=*****;
Per ulteriori informazioni sulla sintassi della stringa di connessione ODBC, vedere ConnectionString.
Vedere anche