Hey guys, need a little bit of help.
I'm using sqlite3 and updating a few tables throughout the use of my app.
My typical update code goes like this (after opening the database):
This works fine, but since my app is Multi Threaded eek every now and then I find that two threads will be trying to access and update the same table at the same time. The error code I get back is SQLITE_BUSY as it cannot contain a DB LOCK.
My question is what is the correct way to handle this? I would think that I should have it sleep for a just a little, then retry. I'm not quite sure how to accomplish this, so any suggestions and code inserts would be great. Also I haven't looked a whole lot into Core Data, but would it have any advantages in this area? My code's quite infused with SQLITE, and I would rather not have to scrap it.
Thanks!
I'm using sqlite3 and updating a few tables throughout the use of my app.
My typical update code goes like this (after opening the database):
Code:
char *errorMsg;
NSString *update = [[NSString alloc] initWithFormat: @"Update PRSN_POINTS SET POINTS = 3"];
if (sqlite3_exec (database, [update UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK){
NSAssert1(0, @"Error updating table:, %s", errorMsg);
)
This works fine, but since my app is Multi Threaded eek every now and then I find that two threads will be trying to access and update the same table at the same time. The error code I get back is SQLITE_BUSY as it cannot contain a DB LOCK.
My question is what is the correct way to handle this? I would think that I should have it sleep for a just a little, then retry. I'm not quite sure how to accomplish this, so any suggestions and code inserts would be great. Also I haven't looked a whole lot into Core Data, but would it have any advantages in this area? My code's quite infused with SQLITE, and I would rather not have to scrap it.
Thanks!