2013-12-15 62 views
0

我有這段代碼可以在我的應用程序中打開數據庫。在它的NSLog聲明其打開數據庫的正確不管所以不管我命名的數據庫@"db1.db"@"dbxxx.db"等它仍然表示,它打開罰款我命名數據庫Objective-C加載不正確DB

//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"); 
    } 
} 

它是一個現有的數據庫,我應該如何添加文件?在xcode5

回答

2

sqlite3_open()
進出口運行創建
數據庫,如果它不存在。 它等於sqlite3_open_v2()SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE標誌。

只打開現有的數據庫,使用

sqlite3_open_v2([[self filePath] UTF8String], &bibleDb, SQLITE_OPEN_READWRITE, NULL) 

你的代碼試圖在應用程序中的「文檔」目錄下打開數據庫。 如果要將數據庫與您的應用程序一起打包,請將其作爲資源添加到 Xcode目標中。然後在你的應用程序,你可以從應用程序包複製到 文檔目錄(如有必要),或使用路徑

NSString * filePath = [[NSBundle mainBundle] pathForResource:@"db1" ofType:@"db"]; 
+0

只是一個提醒到OP直接從應用程序包 打開它 - 如果你從應用程序包打開數據庫,數據庫將是隻讀的。 – rmaddy