遇到 SQLite 错误时会引发 SqliteException。 消息由 SQLite 提供。 属性SqliteErrorCode
SqliteExtendedErrorCode
包含错误的 SQLite 结果代码。
每当 Microsoft.Data.Sqlite 与本机 SQLite 库交互时,都可能会遇到错误。 以下列表显示了可能发生错误的常见方案:
- 打开连接。
- 启动事务。
- 执行命令。
- 调用 NextResult。
请仔细考虑你的应用如何处理这些错误。
锁定、重试和超时
在锁定表和数据库文件时,SQLite 非常积极。 如果应用启用了任何并发数据库访问,则可能会遇到繁忙和锁定错误。 可以使用 预写日志记录来缓解许多错误。
每当 Microsoft.Data.Sqlite 遇到“繁忙”或“锁定”错误时,它都会自动重试,直到成功或达到命令超时限制。
可以通过设置 CommandTimeout来增加命令的超时。 默认超时值为 30 秒。 值 0
意味着无超时。
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite 有时需要创建隐式命令对象。 例如,在 BeginTransaction 期间。 若要设置这些命令的超时,请使用 DefaultTimeout。
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;