2013-02-27 64 views
0

您好我正在嘗試在ios中創建一個sqlite數據庫。 我用方法sqlite3_open與所需的參數,但我總是得到錯誤14(SQLITE_CANTOPEN 14/*無法打開數據庫文件* /)。無法在ios上打開sqlite數據庫

但這並沒有工作,即使最簡單的聲明

NSFileManager *fileMgr = [NSFileManager defaultManager]; 
NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite3"]; 

BOOL success = [fileMgr fileExistsAtPath:dbPath]; 

sqlite3 *db; 

if(!success) 
{ 
    NSLog(@"Cannot locate database file '%@'.", dbPath); 
} 

if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)) 
{ 
    NSLog(@"An error has occured."); 
} 
else{ 
    NSLog(@"Ok"); 
} 

任何想法發生了什麼?

謝謝。

+0

http://stackoverflow.com/questions/4486254/sqlite-database-error-14 – 2013-02-27 13:01:53

+0

大概在這個沒有幫助但是一般情況下,當你得到一個錯誤的返回代碼時,可以使用NSLog(@「SQLite errmsg =%s」,sqlite3_errmsg());來獲取文本錯誤信息。 – 2013-09-06 18:10:58

回答

2

您無法獲得應用程序包中的sqlite數據庫的寫入權限。相反,將數據包中的數據庫複製到「文件」系統中,在合適的位置(給出iCloud問題),然後在那裏打開它。讓您的應用程序首先在文件系統中查找數據庫,並僅在不存在時複製它。

+0

謝謝,它工作! – Albert 2013-02-28 09:38:04

+0

他們應該都是這麼簡單! – 2013-02-28 20:49:37

0

使用文件目錄來存儲數據庫文件,然後創建源碼....它的工作原理