Well, I guess I was not clear in my explanations.
I'm already doing my own locking, that's the problem!
But I'm not sure how to improve it.
...
At which stage the data will be saved it and.....
that will froze the application because the search/select already get the
database lock.
If you were already doing your own locking then you could never get an
SQLITE_BUSY state. One way or another application threads will have to
block to permit access to a single SQLITE database. You can design it
into your program using some form of synchronisation or leave it up to
Sqlite to figure out.
If you are concerned about one thread being a hog, maybe you can make
your DB accesses more granular with shorter transactions, releasing
control between them.