Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SqliteException se lanza cuando se encuentra un error de SQLite. SQLite proporciona el mensaje. Las SqliteErrorCode
propiedades y SqliteExtendedErrorCode
contienen el código de resultado de SQLite del error.
Es posible que se produzcan errores en cualquier momento en que Microsoft.Data.Sqlite interactúe con la biblioteca nativa de SQLite. En la lista siguiente se muestran los escenarios comunes en los que se pueden producir errores:
- Apertura de una conexión.
- Inicio de una transacción.
- Ejecutar un comando.
- Llamada a NextResult.
Considere cuidadosamente cómo la aplicación controlará estos errores.
Bloqueo, reintentos y tiempos de espera
SQLite es agresivo cuando se trata de bloquear tablas y archivos de base de datos. Si la aplicación habilita el acceso simultáneo a bases de datos, es probable que se produzcan errores de estado ocupado y bloqueado. Puede mitigar muchos errores utilizando el registro de escritura previa.
Cada vez que Microsoft.Data.Sqlite encuentra un error ocupado o bloqueado, se reintentará automáticamente hasta que se complete correctamente o se alcance el tiempo de espera del comando.
Puede aumentar el tiempo de espera de un comando estableciendo CommandTimeout. El tiempo de expiración predeterminado es de 30 segundos. Un valor de 0
significa sin límite de tiempo.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite a veces necesita crear un objeto de comando implícito. Por ejemplo, durante BeginTransaction. Para establecer el tiempo de espera de estos comandos, use DefaultTimeout.
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;