我有一个数据库db.sqlite3,我已将其复制粘贴到文档文件夹中,并使用该代码在程序中访问它。
[[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
objectAtIndex:0] stringByAppendingPathComponent:kDbName] UTF8String].
我可以在我的应用程序在模拟器中工作时使用它。
但是当我在设备中测试时,它不起作用。我知道我们应该将它导入Resources然后使用它。我已将其添加到资源中,但如何从程序内部访问它?
答案 0 :(得分:1)
首次启动时(或者如果数据库文件不在文档文件夹中),请从资源中复制它:
NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease];
if ([fileManager fileExistsAtPath: databasePath]) {
return;
}
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
答案 1 :(得分:1)
您的应用程序需要通过从Resources复制它来在Documents文件夹中创建数据库的读写版本。有关如何执行此操作,请参阅任何sqlite-iphone turorial,例如this one
看看你最近的问题,在我看来,你可以通过一个教程来帮助你走上正确的轨道。
答案 2 :(得分:1)
试试这个:
NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"db.sqlite3"];
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
// do something
}