連接字串
連接字串可用來指定連線至資料庫的方式。 Microsoft.Data.Sqlite 中的連接字串遵循標準 ADO.NET 語法,是以分號分隔的關鍵字和值清單。
關鍵字
下列連接字串關鍵字可與 Microsoft.Data.Sqlite 搭配使用:
資料來源
資料庫檔案的路徑。 DataSource (沒有空格) 和 Filename 都是此關鍵字的別名。
SQLite 會處理的是相對於目前工作目錄的路徑。 您也可以指定絕對路徑。
若為空白,則 SQLite 會在磁碟上建立暫存資料庫,此資料庫在連線關閉時即會刪除。
若為 :memory:
,則會使用記憶體內部資料庫。 如需詳細資訊,請參閱記憶體內部資料庫。
開頭為 |DataDirectory|
替代字串的路徑,其處理方式會與相對路徑相同。 如有設定,則會讓路徑變成相對於 DataDirectory 應用程式定義域屬性值。
此關鍵字也支援 URI 檔案名稱。
模式
連線模式。
值 | Description |
---|---|
ReadWriteCreate | 開啟資料庫以供讀取和寫入,若資料庫不存在則會加以建立。 這是預設值。 |
讀寫 | 開啟資料庫以供讀取和寫入。 |
ReadOnly | 以唯讀模式開啟資料庫。 |
記憶體 | 開啟記憶體內部資料庫。 |
Cache
連線所用的快取模式。
值 | Description |
---|---|
預設 | 使用基礎 SQLite 程式庫的預設模式。 這是預設值。 |
私人 | 每次連線都會使用私人快取。 |
共用 | 連線會共用快取。 此模式可變更交易和資料表鎖定的行為。 |
密碼
加密金鑰。 如有指定,開啟連線後即會立刻傳送 PRAGMA key
。
警告
當原生 SQLite 程式庫不支援加密時,密碼不會有任何作用。
注意
3.0 版本已新增 Password 關鍵字。
外部索引鍵
為一個值,用來指出是否要啟用外部索引鍵限制式。
注意
3.0 版本已新增 Foreign Keys 關鍵字。
值 | Description |
---|---|
True | 在開啟連線後立刻傳送 PRAGMA foreign_keys = 1 。 |
False | 在開啟連線後立刻傳送 PRAGMA foreign_keys = 0 。 |
(空白) | 不會傳送 PRAGMA foreign_keys 。 這是預設值。 |
若將 SQLITE_DEFAULT_FOREIGN_KEYS
用來編譯原生 SQLite 程式庫 (例如在 e_sqlite3 中),則無須啟用外部索引鍵。
遞迴觸發程序
為一個值,用來指出是否要啟用遞迴觸發。
注意
3.0 版本已新增 Recursive Triggers 關鍵字。
值 | Description |
---|---|
True | 在開啟連線後立刻傳送 PRAGMA recursive_triggers 。 |
False | 不會傳送 PRAGMA recursive_triggers 。 這是預設值。 |
預設逾時
執行命令的預設逾時 (秒)。 預設值是 30。 Command Timeout 是此關鍵字的別名。
您可以使用 DefaultTimeout 覆寫此值,而該關鍵字可透過 CommandTimeout 覆寫。
注意
6.0 版本已新增 Default Timeout 關鍵字。
Pooling
為一個值,用來指出是否會共用連線。
注意
6.0 版本已新增 Pooling 關鍵字。
值 | Description |
---|---|
True | 將會共用連線。 這是預設值。 |
False | 不會共用連線。 |
Vfs
表示要使用哪個 虛擬文件系統(VFS) 實作的值。 當空白或未指定時,會使用平台的預設 VFS。
注意
Vfs 關鍵詞已在 10.0 版中新增。
連接字串建立器
您可以使用 SqliteConnectionStringBuilder 作為建立連接字串的強類型方式。 其也可用來防範連接字串插入式攻擊。
var connectionString = new SqliteConnectionStringBuilder(baseConnectionString)
{
Mode = SqliteOpenMode.ReadWriteCreate,
Password = password
}.ToString();
範例
基本
具有共用快取的基本連接字串,可用來改善並行。
警告
不建議混合共用快取模式和預寫記錄。 為了獲得最佳效能,當資料庫設定為使用預寫記錄時,請移除 Cache=Shared
。
Data Source=Application.db;Cache=Shared
Encrypted
加密的資料庫。
Data Source=Encrypted.db;Password=MyEncryptionKey
唯讀
應用程式無法修改的唯讀資料庫。
Data Source=Reference.db;Mode=ReadOnly
記憶體中
記憶體內部的私人資料庫。
Data Source=:memory:
可共用的記憶體內部
由名稱 Sharable 所識別的可共用記憶體內部資料庫。
Data Source=Sharable;Mode=Memory;Cache=Shared