sqlite3导入到程序Document

/*===---===

在这个部分中我么进行一下操作:(要把数据库文件存放到储存的位置中)

1.获取应用程序的路径,在手机中就是应用程序存储数据的地方

2.把数据库文件的名称拼接到上面得到的路径上

3.根据拼接好的路径去寻找,并判断这个文件是否存在

===---===*/

//获取应用程序的路径

NSArray*searchPaths=NSSearchPathForDirectoriesInDomains(

NSDocumentDirectory,

NSUserDomainMask,

YES);

NSString*documentFolderPath=[searchPathsobjectAtIndex:0];

NSLog(@"docoumentFolderPath=%@",documentFolderPath);

//往应用程序路径中添加数据库文件名称,把它们拼接起来,这里用到了宏定义(目的是不易出错)

dbFilePath=[documentFolderPathstringByAppendingPathComponent:DATABASE_FILE_NAME];

NSLog(@"dbFilePath=%@",dbFilePath);

//

/*

为什么要往应用程序里添加数据库文件这个过程:

因为下面要进行判断,会根据这个路径去查找应用程序的路径中到底有没有这个文件,

如果有,则不用在此拷贝了,

如果没有,则重新拷贝一次,

数据库文件必须添加进取,否则无法进行数据库的操作,而且必须添加一次,

那么为什么必须要添加一次呢?

因为我们在程序中实现对数据库的修改,然而却又把数据库添加了一次,

那么新添加的数据库就会把旧的数据库覆盖掉,那么程序中对数据库的修改也不能实现,

所以数据库只能添加一次且是在程序运行初添加

*/

//根据上面拼接好的路径dbFilePath,利用NSFileManager类的对象的fileExistsAtPath方法来检测是否存在,返回一个BOOL值

//1.创建NSFileManager对象NSFileManager包含了文件属性的方法

NSFileManager*fm=[NSFileManagerdefaultManager];

//2.通过NSFileManager对象fm来判断文件是否存在,存在返回YES不存在返回NO

BOOLisExist=[fmfileExistsAtPath:dbFilePath];

//-(BOOL)fileExistsAtPath:(NSString*)path;

//如果不存在isExist=NO,拷贝工程里的数据库到Documents下

if(!isExist)

{

//拷贝数据库

//获取工程里,数据库的路径,因为我们已在工程中添加了数据库文件,所以我们要从工程里获取路径

NSString*backupDbPath=[[NSBundlemainBundle]

pathForResource:@"shopping"

ofType:@"db"];

//这一步实现数据库的添加,

//通过NSFileManager对象的复制属性,把工程中数据库的路径拼接到应用程序的路径上

BOOLcp=[fmcopyItemAtPath:backupDbPathtoPath:dbFilePatherror:nil];

NSLog(@"cp=%d",cp);

//-(BOOL)copyItemAtPath:(NSString*)srcPathtoPath:(NSString*)dstPatherror:(NSError**)error

NSLog(@"backupDbPath=%@",backupDbPath);

}

NSLog(@"isExist=%d",isExist);

相关推荐