Hi John,
Thanks a lot for your response.
Make sure I am understanding your answer related to SQLITE_BUSY. So I need to 
change my code from
Open the database connection
 BEGIN
      insert ...using sqlite3_step
     insert ...using sqlite3_step
  END

to 


Open the database connection
 BEGIN
      insert ...using sqlite3_step
     insert ...using sqlite3_step
    ...
 do {
      rc = END (transaction or commit)
while (rc == SQLITE_BUSY)

So I just loop on if the return statement is SQLITE_BUSY.
Is that correct John?
Thanks a ton,
JP



----- Original Message ----
From: John Stanton <[EMAIL PROTECTED]>
To: sqlite-users@sqlite.org
Sent: Wednesday, November 28, 2007 12:04:34 PM
Subject: Re: [sqlite] SQLITE_BUSY retry

You could use a BEGIN IMMEDIATE to lock the DB before you launch the 
transaction and loop on SQLITE_BUSY or use the plain BEGIN which will 
allow reads during the transaction and not lock the DB until you issue a 
COMMIT (the END).  Just loop on the BUSY on the END SQL statement until 
the user who has the DB locked releases it.

A technique we use to get a minimum latency but reasonably efficient 
busy wait is to issue a yield call each time an SQLITE_BUSY is 
encountered so that the time slice is dropped and other processes can 
run.  A alternative is to issue a short delay or sleep.

Joanne Pham wrote:
> Hi All,
> Here my statements to insert rows into the database
>  Open the database connection
>  BEGIN
>        insert ...using sqlite3_step
>        insert ...using sqlite3_step
>  END
> So at the time I issued "END" transaction I got the error message SQLITE_BUSY 
> so I need to issue the "END" transaction again or What should I do in this 
> case to handle SQLITE_BUSY.
> Thanks a lot in advance for the help or advice.
> JP
> 
> 
> 
> ----- Original Message ----
> From: Joanne Pham <[EMAIL PROTECTED]>
> To: sqlite-users@sqlite.org
> Sent: Wednesday, November 28, 2007 11:27:52 AM
> Subject: [sqlite] SQLITE_BUSY retry
> 
> Hi All,
> I have used "BEGIN" and "END" Transaction to insert the data to SQLite 
> database.
>    BEGIN
>        insert ...
>        insert ...
>  END
> 
> When I issued the "END" operation the error message return back is 
> "SQLITE_BUSY". 
> What should I do if I want to handle SQLITE_BUSY /retry the transaction. 
> Should I execute "END" transaction again.
> How to handle the SQLITE_BUSY?
> Thanks,
> JP
> 
> 
>      
> ____________________________________________________________________________________
> Get easy, one-click access to your favorites. 
> Make Yahoo! your homepage.
> http://www.yahoo.com/r/hs
> 
> 
>      
> ____________________________________________________________________________________
> Be a better sports nut!  Let your teams follow you 
> with Yahoo Mobile. Try it now.   
> http://mobile.yahoo.com/sports;_ylt=At9_qDKvtAbMuh1G1SQtBI7ntAcJ


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------


      
____________________________________________________________________________________
Be a better pen pal. 
Text or chat with friends inside Yahoo! Mail. See how.  
http://overview.mail.yahoo.com/

Reply via email to