Dela via


Databasfel

SqliteException utlöses när ett SQLite-fel påträffas. Meddelandet tillhandahålls av SQLite. SqliteErrorCode Egenskaperna och SqliteExtendedErrorCode innehåller SQLite-resultatkoden för felet.

Det kan uppstå fel när som helst som Microsoft.Data.Sqlite interagerar med det interna SQLite-biblioteket. I följande lista visas vanliga scenarier där fel kan inträffa:

  • Öppnar en anslutning.
  • Påbörjar en transaktion.
  • Kör ett kommando.
  • Anropar NextResult.

Överväg noggrant hur din app ska hantera dessa fel.

Låsning, återförsök och tidsgränser

SQLite är aggressivt när det gäller att låsa tabeller och databasfiler. Om din app aktiverar samtidig databasåtkomst kommer du förmodligen att stöta på upptagna och låsta fel. Du kan åtgärda många fel med hjälp av loggning före skrivning.

När Microsoft.Data.Sqlite stöter på ett upptaget eller låst fel försöker det automatiskt igen tills det lyckas eller om tidsgränsen för kommandot nås.

Du kan öka tidsgränsen för ett kommando genom att ange CommandTimeout. Standardtimeouten är 30 sekunder. 0 Värdet betyder ingen timeout.

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

Microsoft.Data.Sqlite behöver ibland skapa ett implicit kommandoobjekt. Till exempel under BeginTransaction. Om du vill ange tidsgränsen för dessa kommandon använder du DefaultTimeout.

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

Se även