2010-01-26 4 views
1

J'utilise un programme C avec sqlite3. Insère parfois des travaux. Mais parfois, cela ne fonctionne pas. assert (retval == SQLITE3_OK) donne une erreur. tandis que le débogage j'ai trouvé valeur retval de sqlite3_step() est le code d'erreur = 5 qui fait référence au fichier de base de données est occupé fermer Même avec sqlite3_close() retour code d'erreur 5.sqlite3 instruction close ne fonctionne pas

Toute réflexion sur la façon de fermer la connexion de base de données, même quand il est occupé?

+0

Utilisez-vous le contrôle des transactions? Avez-vous essayé d'envoyer un "COMMIT"? – amphetamachine

Répondre

0

Vous pourriez être au milieu d'une transaction. Essayez de vérifier http://www.sqlite.org/c3ref/get_autocommit.html pour des explications sur comment fonctionne sqlite3_get_autocommit(). Il devrait retourner un zéro s'il n'est pas en validation automatique, ce qui signifie qu'il y a une transaction ouverte.

Si vous pensez que votre base de données peut encore fonctionner sur quelque chose, vous pouvez utiliser sqlite3_busy_timeout() pour définir un temporisateur. http://www.sqlite.org/c3ref/busy_timeout.html

Questions connexes