我必须在我的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文件。
答案 0 :(得分:0)
在侧边栏中,选中“Targets”=> (你的目标)=> “复制捆绑资源”。我认为你的数据库文件可能没有被复制,因为Xcode不知道它是什么文件类型。
答案 1 :(得分:0)
您无法启动文档文件夹中的任何文件。应用程序附带的所有内容都必须包含在应用程序包中。应用程序第一次运行时,文档文件夹始终为空。
您需要使用NSBundle的pathForResource:ofType:
在应用包内找到该文件。
如果数据库是只读的,您可以将其保留在那里。如果是readwrite,则需要在应用程序首次启动时将文件复制到文档或库文件夹中。
<强>更新强>
你可以举一个关于使用的例子 'NSBundle的pathForResource:ofType:' 拜托,我很抱歉,但我是iphone的新手 SDK
只是:
NSString *path=[[NSBundle mainBundle] pathForResource:@"myDatabase" ofType:@"sqlite"];