Stringhe di connessione
Per specificare la modalità di connessione al database, viene usata una stringa di connessione. Le stringhe di connessione in Microsoft.Data.Sqlite seguono la sintassi ADO.NET standard come elenco di parole chiave e valori separati da punto e virgola.
Parole chiave
Le parole chiave della stringa di connessione seguenti possono essere usate con Microsoft.Data.Sqlite:
Origine dati
Percorso del file di database. DataSource (senza spazio) e Filename sono alias di questa parola chiave.
SQLite tratta i percorsi relativi alla directory di lavoro corrente. È anche possibile specificare percorsi assoluti.
Se vuoto, SQLite crea un database temporaneo su disco che viene eliminato alla chiusura della connessione.
Se :memory:
, viene usato un database in memoria. Per altre informazioni, vedere Database in memoria.
I percorsi che iniziano con la stringa di sostituzione |DataDirectory|
vengono trattati allo stesso modo dei percorsi relativi. Se impostato, i percorsi vengono creati in relazione al valore della proprietà del dominio dell'applicazione DataDirectory.
Questa parola chiave supporta anche i nomi di file URI.
Mode
Modalità di connessione.
Valore | Descrizione |
---|---|
ReadWriteCreate | Apre il database per la lettura e la scrittura e, se non esiste, lo crea. Si tratta dell'impostazione predefinita. |
ReadWrite | Apre il database per la lettura e la scrittura. |
ReadOnly | Apre il database in modalità di sola lettura. |
Memoria | Apre un database in memoria. |
Cache
Modalità di memorizzazione nella cache usata dalla connessione.
Valore | Descrizione |
---|---|
Default | Usa la modalità predefinita della libreria SQLite sottostante. Si tratta dell'impostazione predefinita. |
Privato | Ogni connessione usa una cache privata. |
Condiviso | Le connessioni condividono una cache. Questa modalità può modificare il comportamento del blocco delle transazioni e delle tabelle. |
Password
Chiave di crittografia. Se specificato, PRAGMA key
viene inviato immediatamente dopo l'apertura della connessione.
Avviso
La password non ha alcun effetto quando la crittografia non è supportata dalla libreria SQLite nativa.
Nota
La parola chiave Password è stata aggiunta nella versione 3.0.
Chiavi esterne
Valore che indica se abilitare i vincoli di chiave esterna.
Nota
La parola chiave Foreign Keys è stata aggiunta nella versione 3.0.
Valore | Descrizione |
---|---|
Vero | Invia PRAGMA foreign_keys = 1 subito dopo l'apertura della connessione. |
Falso | Invia PRAGMA foreign_keys = 0 subito dopo l'apertura della connessione. |
(vuoto) | Non invia PRAGMA foreign_keys . Si tratta dell'impostazione predefinita. |
Non è necessario abilitare le chiavi esterne se, come in e_sqlite3, SQLITE_DEFAULT_FOREIGN_KEYS
è stata usata per compilare la libreria SQLite nativa.
Trigger ricorsivi
Valore che indica se abilitare i trigger ricorsivi.
Nota
La parola chiave Recursive Triggers è stata aggiunta nella versione 3.0.
Valore | Descrizione |
---|---|
Vero | Invia PRAGMA recursive_triggers subito dopo l'apertura della connessione. |
Falso | Non invia PRAGMA recursive_triggers . Si tratta dell'impostazione predefinita. |
Default Timeout
Timeout predefinito (in secondi) per l'esecuzione di comandi. Il valore predefinito è 30. Command Timeout è un alias di questa parola chiave.
È possibile eseguire l'override di questo valore usando DefaultTimeout, che a sua volta può essere sovrascritto tramite CommandTimeout.
Nota
La parola chiave Default Timeout è stata aggiunta nella versione 6.0.
Pooling
Valore che indica se la connessione verrà inserita in pool.
Nota
La parola chiave Pooling è stata aggiunta nella versione 6.0.
Valore | Descrizione |
---|---|
Vero | La connessione verrà inserita in pool. Si tratta dell'impostazione predefinita. |
Falso | La connessione non verrà inserita in pool. |
Generatore di stringhe di connessione
È possibile usare SqliteConnectionStringBuilder come metodo fortemente tipizzato per la creazione di stringhe di connessione. Può anche essere usato per impedire attacchi injection alle stringhe di connessione.
var connectionString = new SqliteConnectionStringBuilder(baseConnectionString)
{
Mode = SqliteOpenMode.ReadWriteCreate,
Password = password
}.ToString();
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
Esempi
Di base
Stringa di connessione di base con una cache condivisa per una migliore concorrenza.
Attenzione
Non è consigliabile combinare la modalità cache condivisa e la registrazione write-ahead. Per prestazioni ottimali, rimuovere Cache=Shared
quando il database è configurato per l'uso della registrazione write-ahead.
Data Source=Application.db;Cache=Shared
Encrypted
Database crittografato.
Data Source=Encrypted.db;Password=MyEncryptionKey
Sola lettura
Database di sola lettura che non può essere modificato dall'app.
Data Source=Reference.db;Mode=ReadOnly
In-memory
Database in memoria privato.
Data Source=:memory:
Condivisibile in memoria
Database in memoria condivisibile, identificato dal nome Sharable.
Data Source=Sharable;Mode=Memory;Cache=Shared