Sdílet prostřednictvím


Chyby databáze

SqliteException je vyvolán při výskytu chyby SQLite. Zprávu poskytuje SQLite. Vlastnosti SqliteErrorCode obsahují kód výsledku SQLite SqliteExtendedErrorCode chyby.

K chybám může dojít kdykoli, když Microsoft.Data.Sqlite komunikuje s nativní knihovnou SQLite. Následující seznam ukazuje běžné scénáře, ve kterých můžou nastat chyby:

  • Otevření připojení
  • Zahájení transakce.
  • Spuštění příkazu
  • Volání NextResult.

Pečlivě zvažte, jak bude aplikace tyto chyby zpracovávat.

Uzamčení, opakování a vypršení časových limitů

SQLite je agresivní, pokud jde o zamykání tabulek a databázových souborů. Pokud vaše aplikace povolí jakýkoli souběžný přístup k databázi, pravděpodobně dojde k zaneprázdněným a uzamčeným chybám. Mnoho chyb můžete zmírnit pomocí protokolování s předstihem při zápisu.

Pokaždé, když Microsoft.Data.Sqlite narazí na zaneprázdněnou nebo uzamčenou chybu, bude se automaticky opakovat, dokud se nedosáhne časového limitu příkazu.

Časový limit příkazu můžete zvýšit nastavením CommandTimeout. Výchozí časový limit je 30 sekund. Hodnota 0 znamená žádný časový limit.

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

Microsoft.Data.Sqlite někdy potřebuje vytvořit implicitní příkazový objekt. Například během BeginTransaction. K nastavení časového limitu pro tyto příkazy použijte DefaultTimeout.

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

Viz také