连接字符串
用于指定如何连接到数据库的连接字符串。 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();
重要
Microsoft 建议使用最安全的可用身份验证流。 如果要连接到 Azure SQL,建议使用 Azure 资源的托管标识这种身份验证方法。
示例
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