如何在iphone sdk中将现有数据库添加到我的应用程序中

时间:2010-11-30 19:34:50

标签: iphone database sqlite

我必须在我的iphone应用程序中添加一个现有的数据库 我试图把它放到项目的文件夹中并使用这个init函数

-(id) initDatabase{
    databaseName = @"mydatabase.sqlite";
    // Get the path to the documents directory and append the databaseName
 NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDir = [documentPaths objectAtIndex:0];
 databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
 [databasePath retain];

    return self;
}

然后我使用了这个功能

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK){ //inserting methods

但是我有一个错误:表'nametable'不存在,我确信这个表存在,我认为这些方法会在设备路径中创建一个新的db文件。

2 个答案:

答案 0 :(得分:0)

在侧边栏中,选中“Targets”=> (你的目标)=> “复制捆绑资源”。我认为你的数据库文件可能没有被复制,因为Xcode不知道它是什么文件类型。

答案 1 :(得分:0)

您无法启动文档文件夹中的任何文件。应用程序附带的所有内容都必须包含在应用程序包中。应用程序第一次运行时,文档文件夹始终为空。

您需要使用NSBundle的pathForResource:ofType:在应用包内找到该文件。

如果数据库是只读的,您可以将其保留在那里。如果是readwrite,则需要在应用程序首次启动时将文件复制到文档或库文件夹中。


<强>更新

  你可以举一个关于使用的例子   'NSBundle的pathForResource:ofType:'   拜托,我很抱歉,但我是iphone的新手   SDK

只是:

NSString *path=[[NSBundle mainBundle] pathForResource:@"myDatabase" ofType:@"sqlite"];