Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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, herhaalde pogingen en time-outs
Waarschuwing
Hoewel SQLite gelijktijdige toegang tot dezelfde database vanuit meerdere threads ondersteunt, zijn de .NET API-objecten niet thread-veilig. Dit betekent dat SqliteConnection, SqliteCommand en SqliteDataReader kan niet gelijktijdig worden gedeeld en gebruikt vanuit meerdere threads.
Wanneer u Microsoft.Data.Sqlite gebruikt vanuit een gelijktijdige toepassing, maakt en opent u simpelweg een nieuwe instantie van SqliteConnection wanneer u toegang nodig hebt tot de database (pooling zorgt ervoor dat dit een snelle bewerking is).
SQLite is agressief als het gaat om het vergrendelen van tabellen en databasebestanden. Als uw app gelijktijdige databasetoegang mogelijk maakt, zult u waarschijnlijk bezet- en vergrendelingsfouten tegenkomen. U kunt veel fouten beperken door write-ahead logging te gebruiken.
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;