Hello everyone,

I'm new on this list and I have only a few months of experience with
SQLITE. I use SQLITE 3.3.6 for Linux with C++.

I'm having a few problems with locking. But before describing the
problem itself, I would like to check if I'm doing something wrong.

That's what I do when I try to INSERT something in my database:

PREPARE
BIND
EC = STEP
while EC = BUSY {
  TRY AGAIN 10 TIMES; // SQLITE is set to sleep 1 sec if BUSY.
  IF TIME > 10 { BREAK; }
}

And then I do some other selects and inserts. Now I read that there is
another function I should be using: sqlite3_finalize. From what I
understood I should be doing:

PREPARE
BIND
EC = STEP
while EC = BUSY {
  TRY AGAIN 10 TIMES; // SQLITE is set to sleep 1 sec if BUSY.
  IF TIME > 10 { BREAK; }
}
FINALIZE

Am I right?

Question: what if a PREPARE returns BUSY? What should I do? Why would a
PREPARE return BUSY?

I'm having problems understanding the SQLite docs. At the 'C/C++
Interface for SQLite Version 3' it says that sqlite3_exec is a wrapper
to 'prepare, finalize, reset' without a step. But a little bit down the
document it says you should use and step. But again, what if I don't
want to wait the busy state anymore? Should I use finalize or interrupt
and then finalize?

Thank you very much for your help!

Best regards,
Daniel Colchete

Reply via email to