Objective-C没有加载正确的DB

时间:2013-12-15 15:37:20

标签: objective-c sqlite

我有这个代码在我的应用程序中打开数据库。在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上运行

1 个答案:

答案 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"];