資料庫錯誤
SqliteException 會在遇到 SQLite 錯誤時擲回。 訊息是由 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;