Veritabanı hataları

SqliteException bir SQLite hatasıyla karşılaşıldığında oluşturulur. İleti SQLite tarafından sağlanır. ve özellikleri hatanın SqliteErrorCode SQLite sonuç kodunu içerir.SqliteExtendedErrorCode

Microsoft.Data.Sqlite yerel SQLite kitaplığıyla etkileşime geçildiğinde hatalarla karşılaşılabilir. Aşağıdaki listede hataların oluşabileceği yaygın senaryolar gösterilmektedir:

  • Bağlantı açılıyor.
  • bir işlem başlıyor.
  • Komut yürütülüyor.
  • çağrısı yapıyor NextResult.

Uygulamanızın bu hataları nasıl işleyeceklerini dikkatle göz önünde bulundurun.

Kilitleme, yeniden denemeler ve zaman aşımları

Tabloları ve veritabanı dosyalarını kilitleme konusunda SQLite agresiftir. Uygulamanız herhangi bir eşzamanlı veritabanı erişimini etkinleştirirse, büyük olasılıkla meşgul ve kilitli hatalarla karşılaşırsınız. Önceden yazma günlüğünü kullanarak birçok hatayı azaltabilirsiniz.

Microsoft.Data.Sqlite meşgul veya kilitli bir hatayla karşılaştığında, başarılı olana veya komut zaman aşımına ulaşılana kadar otomatik olarak yeniden dener.

komutunu ayarlayarak CommandTimeoutkomutun zaman aşımını artırabilirsiniz. Varsayılan zaman aşımı 30 saniyedir. değeri 0 zaman aşımı olmadığı anlamına gelir.

// Retry for 60 seconds while locked
command.CommandTimeout = 60;

Microsoft.Data.Sqlite'ın bazen örtük bir komut nesnesi oluşturması gerekir. Örneğin, BeginTransaction sırasında. Bu komutların zaman aşımını ayarlamak için kullanın DefaultTimeout.

// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;

Ayrıca bkz.