データベース エラー

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;

関連項目