Register FAQ / Rules Forum Spy Search Today's Posts Mark Forums Read
Go Back   MacRumors Forums > Apple Systems and Services > Programming > iPhone/iPad Programming

Reply
 
Thread Tools Search this Thread Display Modes
Old Feb 4, 2011, 04:42 PM   #1
tdog09
macrumors member
 
Join Date: Jul 2008
SQLITE Busy Handling

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):

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 () 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!
tdog09 is offline   0 Reply With Quote
Old Feb 5, 2011, 06:26 PM   #2
PhoneyDeveloper
macrumors 68030
 
PhoneyDeveloper's Avatar
 
Join Date: Sep 2008
I believe that FMDB manages this. If you don't want to use FMDB directly then you can look at its code.
PhoneyDeveloper is offline   0 Reply With Quote
Old Feb 7, 2011, 07:48 PM   #3
tdog09
Thread Starter
macrumors member
 
Join Date: Jul 2008
Quote:
Originally Posted by PhoneyDeveloper View Post
I believe that FMDB manages this. If you don't want to use FMDB directly then you can look at its code.
Thanks, are there more resources on how to use FMDB?
tdog09 is offline   0 Reply With Quote
Old Feb 7, 2011, 09:39 PM   #4
PhoneyDeveloper
macrumors 68030
 
PhoneyDeveloper's Avatar
 
Join Date: Sep 2008
Unfortunately documentation is a weak point for FMDB. On the good side it's not very much code and you get all of the code to read yourself.

There is one example file that shows the basics.

To use an FMDB database from a thread all you do is create another database object on each thread. It should "just work" in that case. I've had no problems using it from multiple threads concurrently.
PhoneyDeveloper is offline   0 Reply With Quote
Old Feb 8, 2011, 01:48 PM   #5
tdog09
Thread Starter
macrumors member
 
Join Date: Jul 2008
Quote:
Originally Posted by PhoneyDeveloper View Post
Unfortunately documentation is a weak point for FMDB. On the good side it's not very much code and you get all of the code to read yourself.

There is one example file that shows the basics.

To use an FMDB database from a thread all you do is create another database object on each thread. It should "just work" in that case. I've had no problems using it from multiple threads concurrently.
Thanks for help! I started looking at it and using it in my code. Question, does an AutoRelease Pool need to be created each time I create a new database object? Thanks!
tdog09 is offline   0 Reply With Quote
Old Feb 8, 2011, 02:00 PM   #6
PhoneyDeveloper
macrumors 68030
 
PhoneyDeveloper's Avatar
 
Join Date: Sep 2008
I don't think so. Why do you ask?

If you're asking about a db on a thread then the normal memory management for threads applies. It's certainly possible that iterating over a result set will generate a lot of autoreleased objects and you might use a local autorelease pool for that. If that's what you're asking.
PhoneyDeveloper is offline   0 Reply With Quote

Reply
MacRumors Forums > Apple Systems and Services > Programming > iPhone/iPad Programming

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
thread Thread Starter Forum Replies Last Post
I'm busy app? fortytwoeleven iPad Apps 2 Oct 20, 2013 10:32 PM
While everyone's busy getting excited ... skillwill iOS 7 17 Sep 18, 2013 01:15 PM
Busy Cal 2.0 Oldmanmac Mac Applications and Mac App Store 2 Mar 13, 2013 09:03 AM
Slow SQLite Query Starfox Mac Programming 3 Sep 10, 2012 12:04 PM
Sqlite and Core Data kimbebot iPhone/iPad Programming 5 Jul 23, 2012 01:44 AM

Forum Jump

All times are GMT -5. The time now is 08:36 AM.

Mac Rumors | Mac | iPhone | iPhone Game Reviews | iPhone Apps

Mobile Version | Fixed | Fluid | Fluid HD
Copyright 2002-2013, MacRumors.com, LLC