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;
こちらも参照ください
.NET