Erros da base de dados
SqliteException é lançado quando um erro SQLite é encontrado. A mensagem é fornecida pelo SQLite. As SqliteErrorCode
propriedades e SqliteExtendedErrorCode
contêm o código de resultado SQLite do erro.
Erros podem ser encontrados sempre que o Microsoft.Data.Sqlite interage com a biblioteca SQLite nativa. A lista a seguir mostra os cenários comuns onde erros podem ocorrer:
- Abrir uma ligação.
- Iniciar uma transação.
- Executando um comando.
- Ligando NextResultpara .
Considere cuidadosamente como seu aplicativo lidará com esses erros.
Bloqueio, tentativas e tempos limite
SQLite é agressivo quando se trata de bloquear tabelas e arquivos de banco de dados. Se seu aplicativo habilitar qualquer acesso simultâneo ao banco de dados, você provavelmente encontrará erros ocupados e bloqueados. Você pode atenuar muitos erros usando o log write-ahead.
Sempre que o Microsoft.Data.Sqlite encontrar um erro ocupado ou bloqueado, ele tentará automaticamente até que seja bem-sucedido ou o tempo limite do comando seja atingido.
Você pode aumentar o tempo limite de um comando definindo CommandTimeout. O tempo limite padrão é de 30 segundos. Um valor de 0
significa que não há tempo limite.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite às vezes precisa criar um objeto de comando implícito. Por exemplo, durante BeginTransaction. Para definir o tempo limite para esses comandos, use DefaultTimeout.
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;