Condividi tramite


Stringhe di connessione in ADO.NET

Si applica a: .NET Framework .NET .NET Standard

Scarica ADO.NET

Una stringa di connessione contiene informazioni di inizializzazione che vengono passate come parametro da un provider di dati a un'origine dati. Il provider di dati riceve la stringa di connessione come valore della proprietà DbConnection.ConnectionString. Il provider analizza la stringa di connessione e garantisce che la sintassi sia corretta e che le parole chiave siano supportate. Quindi il metodo DbConnection.Open() passa i parametri di connessione analizzati all'origine dati. L'origine dati esegue una convalida ulteriore e stabilisce una connessione.

Sintassi della stringa di connessione

Una stringa di connessione è un elenco delimitato da punti e virgola composto da coppie di parametri chiave/valore:

keyword1=value; keyword2=value;

Le parole chiave non fanno distinzione tra maiuscole e minuscole. I valori, tuttavia, possono fare distinzione tra maiuscole e minuscole, a seconda dell'origine dati. Sia le parole chiave che i valori possono contenere spazi vuoti. Lo spazio vuoto iniziale e finale viene ignorato nelle parole chiave e nei valori non racchiusi tra virgolette.

Se un valore contiene il punto e virgola, caratteri di controllo Unicode o uno spazio vuoto iniziale o finale, deve essere racchiuso tra virgolette singole o doppie. Ad esempio:

Keyword=" whitespace  ";
Keyword='special;character';

Il carattere di inclusione potrebbe non essere presente nel valore che racchiude. Pertanto, un valore contenente virgolette singole può essere racchiuso solo tra virgolette doppie e viceversa:

Keyword='double"quotation;mark';
Keyword="single'quotation;mark";

È anche possibile tralasciare il carattere di inclusione usandone due insieme:

Keyword="double""quotation";
Keyword='single''quotation';

Le virgolette stesse, così come il segno di uguale, non richiedono caratteri di escape, pertanto sono valide le seguenti stringhe di connessione:

Keyword=no "escaping" 'required';
Keyword=a=b=c

Poiché ogni valore viene letto fino al punto e virgola successivo o alla fine della stringa, il valore nel secondo esempio è a=b=ce il punto e virgola finale è facoltativo.

Tutte le stringhe di connessione condividono la stessa sintassi di base descritta in precedenza. Il set di parole chiave riconosciute dipende dal provider. Il provider di dati Microsoft SqlClient per SQL Server supporta molte parole chiave di API precedenti, ma è in genere più flessibile e accetta sinonimi per molte delle parole chiave comuni della stringa di connessione.

Gli errori di ortografia possono produrre errori. Ad esempio Integrated Security=true è valido, mentre IntegratedSecurity=true genera un errore.

Le stringhe di connessione create manualmente in fase di esecuzione da input dell'utente non convalidato sono vulnerabili ad attacchi injection alle stringhe e compromettono la sicurezza nell'origine dati. Per risolvere questi problemi, è stata creata la classe SqlConnectionStringBuilder. Questo generatore di stringhe di connessione espone i parametri come proprietà fortemente tipizzate e consente di convalidare la stringa di connessione prima che venga inviata all'origine dati.

In questa sezione

Generatore di stringhe di connessione
Viene illustrato come usare la classe ConnectionStringBuilder per costruire stringhe di connessione valide in fase di esecuzione.

Stringhe di connessione e file di configurazione
Viene illustrato come archiviare e recuperare le stringhe di connessione nei file di configurazione.

Sintassi della stringa di connessione
Viene descritto come configurare stringhe di connessione specifiche del provider per SqlClient.

Protezione delle informazioni di connessione
Vengono illustrate tecniche per proteggere le informazioni usate per la connessione a un'origine dati.

Vedi anche