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;