连接字符串

用于指定如何连接到数据库的连接字符串。 Microsoft.Data.Sqlite 中的连接字符串遵循标准 ADO.NET 语法,形成以分号分隔的关键字和值的列表。

关键字

以下连接字符串关键字可以与 Microsoft.Data.Sqlite 一起使用:

数据源

数据库文件的路径。 DataSource (不带空格)和 Filename 是此关键字的别名。

SQLite 处理相对于当前工作目录的路径。 还可以指定绝对路径。

如果为空 ,则 SQLite 将创建一个临时磁盘数据库,该数据库会在连接关闭时删除。

如果为 :memory:,则使用内存数据库。 有关详细信息,请参阅内存数据库

|DataDirectory| 替换字符串开头的路径被视作与相对路径相同。 如果设置,路径是相对于 DataDirectory 应用程序域属性值进行设置的。

此关键字还支持 URI 文件名

模式

连接模式。

“值” 描述
ReadWriteCreate 打开数据库以进行读取和写入,如果数据库不存在,则创建数据库。 这是默认设置。
ReadWrite 打开数据库以进行读取和写入。
ReadOnly 以只读模式打开数据库。
内存 打开内存数据库。

缓存

连接使用的缓存模式。

“值” 说明
默认 使用基础 SQLite 库的默认模式。 这是默认设置。
Private 每个连接使用一个专用缓存。
Shared 连接共享一个缓存。 此模式可更改事务和表锁定的行为。

Password

加密密钥。 指定后,打开连接后会立即发送 PRAGMA key

警告

当本机 SQLite 库不支持加密时,密码不起作用。

注意

Password 关键字已添加到版本 3.0 中。

Foreign Keys

一个指示是否启用外键约束的值。

注意

Foreign Keys 关键字已添加到版本 3.0 中。

说明
True 打开连接后会立即发送 PRAGMA foreign_keys = 1
False 打开连接后会立即发送 PRAGMA foreign_keys = 0
(空) 不发送 PRAGMA foreign_keys。 这是默认值。

如果已将 SQLITE_DEFAULT_FOREIGN_KEYS 用于编译原生 SQLite 库(例如在 e_sqlite3 中),那么就不需要启用外键。

递归触发器

一个指示是否启用递归触发器的值。

注意

Recursive Triggers 关键字已添加到版本 3.0 中。

说明
True 打开连接后会立即发送 PRAGMA recursive_triggers
False 不发送 PRAGMA recursive_triggers。 这是默认设置。

默认超时

执行命令的默认超时(秒)。 默认值为 30。 Command Timeout 是此关键字的别名。

此值可以使用 DefaultTimeout 替代,而该值又可以使用 CommandTimeout 替代。

注意

Default Timeout 关键字已添加到版本 6.0 中。

Pooling

指示是否将共用连接的值。

注意

Pooling 关键字已添加到版本 6.0 中。

说明
True 将共用连接。 这是默认值。
错误 不会共用连接。

连接字符串生成器

可以使用 SqliteConnectionStringBuilder 作为创建连接字符串的强类型方式。 它还可以用于防御连接字符串注入攻击。

var connectionString = new SqliteConnectionStringBuilder(baseConnectionString)
{
    Mode = SqliteOpenMode.ReadWriteCreate,
    Password = password
}.ToString();

示例

Basic

一个包含共享缓存的基本连接字符串,用于提高并发。

注意

不建议混合使用共享缓存模式和预写日志记录。 为了获得最佳性能,请在将数据库配置为使用预写日志记录时删除 Cache=Shared

Data Source=Application.db;Cache=Shared

加密

一个加密的数据库。

Data Source=Encrypted.db;Password=MyEncryptionKey

只读

一个应用无法修改的只读数据库。

Data Source=Reference.db;Mode=ReadOnly

内存中

一个专用的内存数据库。

Data Source=:memory:

可共享的内存

一个标识有“Sharable” 名称的可共享内存数据库。

Data Source=Sharable;Mode=Memory;Cache=Shared

请参阅