Compartilhar via


Erros do banco de dados

SqliteException é gerado quando um erro SQLite é encontrado. A mensagem é fornecida pelo SQLite. As propriedades SqliteErrorCode e SqliteExtendedErrorCode contêm o código de resultado do SQLite do erro.

Podem ser encontrados erros sempre que o Microsoft.Data.Sqlite interage com a biblioteca SQLite nativa. A seguinte lista mostra os cenários comuns em que erros podem ocorrer:

  • Abrir uma conexão.
  • Iniciar uma transação.
  • Execução de um comando.
  • Chamando NextResult.

Considere cuidadosamente como seu aplicativo lidará com esses erros.

Bloqueio, repetições e tempos limite

O SQLite é agressivo quando se trata de bloquear tabelas e arquivos de banco de dados. Se o aplicativo habilitar qualquer acesso simultâneo ao banco de dados, você provavelmente encontrará erros de ocupado e bloqueado. Você pode atenuar muitos erros usando o registro em log antecipado.

Sempre que o Microsoft.Data.Sqlite encontrar um erro de ocupado ou bloqueado, ele tentará novamente de modo automático até obter sucesso ou o tempo limite do comando ser atingido.

Aumente o tempo limite do comando definindo CommandTimeout. O tempo limite padrão é 30 segundos. Um valor de 0 significa que não há tempo limite.

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

O 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;

Confira também