2013-02-27 133 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

使用文件目录来存储数据库文件,然后创建源码....它的工作原理