I used the following plugin for Cordova 2.7 with iOS6 and I see that it has been recently updated. https://github.com/pgsqlite/PG-SQLitePlugin-iOS
They also have an Android version. Part of the problem is changing PhoneGap, so updating plugins often can take a lot of time, so they don't work. Here is the code for the init method in AppDelegate.m. I use in this project http://www.binpress.com/app/conference-core-ios-for-phonegap/1483
Keep in mind that sometimes you need to wipe iOS Simulator so that it reloads the files associated with the application.
- (id)init{ NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; int cacheSizeMemory = 8 * 1024 * 1024;
if __has_feature (objc_arc)
NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
yet
NSURLCache* sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease];
Endif
[NSURLCache setSharedURLCache:sharedCache]
databaseName = @"SomeCoolDatabase.db"; NSLog(@"databaseName: %@", databaseName); databasePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0]; NSLog(@"databasePath: %@", databasePath); databaseFile = [databasePath stringByAppendingPathComponent:databaseName]; NSLog(@"databaseFile: %@", databaseFile);
}
- (void) checkAndCreateDatabase {
// Check if the SQL database has already been saved to the users phone, if not then copy it over BOOL success; // Create a FileManager object, we will use this to check the status // of the database and to copy it over if required NSFileManager *fileManager = [NSFileManager defaultManager]; // Check if the database has already been created in the users filesystem success = [fileManager fileExistsAtPath:databaseFile]; // If the database already exists then return without doing anything if(success){ NSLog(@"Database Present"); return; } else { NSLog(@"database not present"); } // If not then proceed to copy the database from the application to the users filesystem // Get the path to the database in the application package NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; // Create the database folder structure [fileManager createDirectoryAtPath:databasePath withIntermediateDirectories:YES attributes:nil error:NULL]; // Copy the database from the package to the users filesystem [fileManager copyItemAtPath:databasePathFromApp toPath:databaseFile error:nil]; [fileManager release];
}
Hope this helps ...
source share