Erreurs de base de données
SqliteException est levé quand une erreur SQLite est rencontrée. Le message est fourni par SQLite. Les propriétés SqliteErrorCode
et SqliteExtendedErrorCode
contiennent le code résultat SQLite de l’erreur.
Des erreurs peuvent survenir chaque fois que Microsoft.Data.Sqlite interagit avec la bibliothèque SQLite native. La liste suivante présente les scénarios courants où des erreurs peuvent se produire :
- Ouverture d’une connexion.
- Démarrage d’une transaction.
- Exécution d'une commande.
- Appel de NextResult.
Réfléchissez attentivement à la façon dont votre application va gérer ces erreurs.
Verrouillage, nouvelles tentatives et délais d’expiration
SQLite est agressif quand il s’agit de verrouiller les tables et les fichiers de base de données. Si votre application permet les accès simultanés à la base de données, vous rencontrerez probablement des erreurs de disponibilité et de verrouillage. Vous pouvez atténuer de nombreuses erreurs à l’aide de la journalisation WAL (Write-Ahead Logging).
Chaque fois que Microsoft.Data.Sqlite rencontre une erreur de disponibilité ou de verrouillage, il réessaye automatiquement jusqu’à ce qu’il réussisse ou que le délai d’expiration de la commande soit atteint.
Vous pouvez augmenter le délai d’expiration d’une commande en définissant CommandTimeout. Le délai d’expiration par défaut est de 30 secondes. La valeur 0
signifie qu’il n’existe aucun délai d’expiration.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite doit parfois créer un objet de commande implicite. Par exemple, durant BeginTransaction. Pour définir le délai d’expiration de ces commandes, utilisez DefaultTimeout.
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;