如何将数据库导入我的iphone程序?

时间:2010-01-06 13:13:54

标签: iphone ios-simulator

我有一个数据库db.sqlite3,我已将其复制粘贴到文档文件夹中,并使用该代码在程序中访问它。

[[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
   objectAtIndex:0] stringByAppendingPathComponent:kDbName] UTF8String].

我可以在我的应用程序在模拟器中工作时使用它。

但是当我在设备中测试时,它不起作用。我知道我们应该将它导入Resources然后使用它。我已将其添加到资源中,但如何从程序内部访问它?

3 个答案:

答案 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
}