Condividi tramite


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();

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

Vedi anche