2011-09-13 61 views
1

在使用SQLite database.when我運行在iPhone simulater它的工作原理我的應用程序運行的IM它fine.but與不能爲該數據庫device.the路徑連接數據庫時:SQLite數據庫想不出發現,在設備

/Users/taxsmart7/Library/Application Support/iPhone Simulator/4.3/Applications/A644750D- 5175-4FF1-BDA7-6EDF65895180/Documents/BillSplitter.sqlite 

當我連接我的設備數據庫顯示空白。

+0

你是否在應用程序中捆綁了一個預先準備好的.sqlite文件,或者是應用程序是否創建了一個新的數據庫? –

+0

是我使用預先準備好的sqlite文件 – Developer

回答

1

如果您只需要讀取sqlite3數據庫,那麼使用應用程序包中的數據庫就很有意義。
您可以打開數據庫實例:

NSString *pathname = [[NSBundle mainBundle] pathForResource:@"nameOfYourDatabase" ofType:@"sqlite3"]; // extension could not be .sqlite3!!! Have a look on your db file. 
sqlite3 *database; 
int res = sqlite3_open_v2([pathname UTF8String], &database, SQLITE_OPEN_READONLY, NULL); 
if (res != SQLITE_OK) { 
    NSLog(@"Error opening database %@", pathname); 
    sqlite3_close(database); 
} 

如果您需要在數據庫上寫上您的應用程序第一次運行,你需要從應用程序包拷貝數據庫文件到應用程序的文件目錄,然後打開數據庫讀寫訪問。

1

這很正常,這是數據庫在模擬器上運行時的路徑,用不同的方式表示:在您的Mac上。應用程序的路徑以及在設備上運行時的整個「文件系統」層次結構完全不同。
你不應該使用任何絕對路徑在應用程序中,只有從應用程序的根文件夾,這有點像工作:
/private/var/mobile/Applications/A644750D-5175-4FF1-BDA7-6EDF65895180/

所以,如果你想在你的應用程序使用的數據庫,你就會有將其複製到軟件包中並找到正確的路徑,或者在設備上執行時創建一個路徑。

HTH

編輯:上面的路徑方案可能是錯誤的,我懷疑這只是路徑預留給應用程序的「文檔」文件夾中。無論如何,我的建議保持不變:使用相對路徑。

+0

如何設置此路徑? – Developer

+0

你不需要,你必須使用相對路徑。看看你的bundle結構,只需使用類似'./Data/mydb.sqlite'的東西。 – psycho

+0

哪裏給出相對路徑? – Developer

相關問題