Databasefouten
SqliteException wordt gegenereerd wanneer er een SQLite-fout optreedt. Het bericht wordt geleverd door SQLite. De SqliteErrorCode
en SqliteExtendedErrorCode
eigenschappen bevatten de SQLite-resultaatcode van de fout.
Er kunnen fouten optreden wanneer microsoft.Data.Sqlite communiceert met de systeemeigen SQLite-bibliotheek. In de volgende lijst ziet u de veelvoorkomende scenario's waarin fouten kunnen optreden:
- Een verbinding openen.
- Een transactie beginnen.
- Een opdracht uitvoeren.
- Bellen NextResult.
Overweeg zorgvuldig hoe uw app deze fouten afhandelt.
Vergrendeling, nieuwe pogingen en time-outs
SQLite is agressief als het gaat om het vergrendelen van tabellen en databasebestanden. Als uw app gelijktijdige databasetoegang inschakelt, ondervindt u waarschijnlijk bezet- en vergrendelde fouten. U kunt veel fouten beperken met behulp van logboekregistratie voor write-ahead.
Wanneer Microsoft.Data.Sqlite een bezet of vergrendelde fout tegenkomt, wordt het automatisch opnieuw geprobeerd totdat deze is geslaagd of de time-out van de opdracht is bereikt.
U kunt de time-out van een opdracht verhogen door de instelling in te stellen CommandTimeout. De standaardtime-out is 30 seconden. Een waarde van 0
betekent geen time-out.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite moet soms een impliciet opdrachtobject maken. Bijvoorbeeld tijdens BeginTransaction. Als u de time-out voor deze opdrachten wilt instellen, gebruikt u DefaultTimeout.
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;