On 1 Jan 2014, at 7:43am, Alexander Syvak <alexander....@gmail.com> wrote:

> The code in function from the 1st e-mail is used before exiting, so the
> sqlite3_close is called in fact.

Please do not cross-post between sqlite-dev@ and sqlite@.  If you need to move 
from one to the other, start a new thread.

I can't find the post that started the thread but if you're having trouble 
using sqlite3_close() then  the database is probably not being closed.  Please 
check the result returned and log an error if it's not SQLITE_OK so you can be 
sure whether it worked or not.

If _close() really isn't working for you it's probably because you have an 
unfinalized statement.  This can happen if sqlite3_finalize() fails (though it 
really shouldn't) So check and log the result code from sqlite3_finalize() too.

>>       while ( (rc = sqlite3_close(db)) == SQLITE_BUSY)


I'm not happy about this.  SQLITE_BUSY should not be a reason to start running 
other statements.  It should be a reason to back off and announce failure to 
the user.  To avoid getting _BUSY and then having to write a handler yourself 
set a good timeout (ten seconds ?) using

sqlite3_busy_timeout()

after the database is opened.  From then on you can treat SQLITE_BUSY the same 
as other failure results.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to