我有这个代码在我的应用程序中打开数据库。在NSLog中,无论我将数据库命名为什么,它都会正确地打开数据库
//path to db
-(NSString *) filePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return[[paths objectAtIndex:0] stringByAppendingPathComponent:@"db1.db"];
}
//open db
-(void)openDB {
if (sqlite3_open([[self filePath] UTF8String], &bibleDb) == SQLITE_OK){
sqlite3_close(bibleDb);
NSLog(@"Database Opened");
} else {
NSAssert(0,@"Database filed to open");
NSLog(@"Database Opened");
}
}
所以不管我是否命名数据库@"db1.db"
或@"dbxxx.db"
等,它仍然表示它打开正常。
它是一个现有的数据库,我应该在哪里/如何添加文件? 我在xcode5上运行
答案 0 :(得分:2)
sqlite3_open()
创建数据库。
它等同于sqlite3_open_v2()
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE
标志。
要仅打开现有数据库,请使用
sqlite3_open_v2([[self filePath] UTF8String], &bibleDb, SQLITE_OPEN_READWRITE, NULL)
您的代码尝试在应用程序“Document”目录中打开数据库。 如果要将数据库与应用程序打包在一起,请将其作为资源添加到 Xcode目标。然后在您的应用程序中,您可以将其从应用程序包复制到 Document目录(如有必要),或直接从应用程序包中打开它 使用路径
NSString * filePath = [[NSBundle mainBundle] pathForResource:@"db1" ofType:@"db"];