2010-01-06 66 views
0

我有一個數據庫db.sqlite3,我已將其複製粘貼到文檔文件夾中,並使用代碼在程序中訪問它。如何將數據庫導入到我的iphone程序中?

[[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) 
    objectAtIndex:0] stringByAppendingPathComponent:kDbName] UTF8String]. 

而我可以使用它,而我的應用程序在模擬器中工作。

但是,當我在設備中測試,它不起作用。我知道我們應該將它導入資源然後使用它。我已將它添加到資源中,但是如何從程序內部訪問它?

回答

1

試試這個:

NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"db.sqlite3"]; 
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 
// do something 
} 
+0

是的,請記住,在這種情況下,您不會訪問任何數據庫。 – Vladimir 2010-01-06 13:39:16

+0

非常感謝。我知道它很簡單,但不知道爲什麼,揣測出它。 – wolverine 2010-01-06 14:20:09

1

在第一次啓動(或案例庫文件不在文件夾)的資源複製:

NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease]; 

if ([fileManager fileExistsAtPath: databasePath]) { 
    return; 
} 

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; 
+0

這也爲我工作。但是因爲我沒有寫任何東西給DB,所以我使用了更早的版本。無論如何,非常感謝。 – wolverine 2010-01-07 04:40:17

1

你的應用程序需要通過複製創建的文檔文件夾中數據庫的讀寫版本它來自Resources。請參閱任何sqlite-iphone turorial以瞭解如何執行此操作,例如this one

看看你最近的問題,在我看來,你會從通過教程獲得幫助,讓你走上正軌。

相關問題