Delen via


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;

Zie ook