数据库错误

遇到 SQLite 错误时会引发 SqliteException。 消息由 SQLite 提供。 SqliteErrorCodeSqliteExtendedErrorCode 属性包含错误的 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;

请参阅