数据库FMDB的使用

讲之前先请大家下载一个demo,封装的很好,很好用的一个类;

https://github.com/gaojunquan/JQFMDB


接下来我要讲的就是以这个为基础的;

1.首先呢先导入两个文件夹:先导入文件    FMDatabase(注:这个可以从github上下载)JQFMDB(这个是一个封装的比较完好的类);

//读取数据库中应用列表信息

//获取Documents文件夹位置

NSString *path  = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

//新建一个.plist文件放置到Documents文件中

//首次写需要写明[JQFMDB shareDatabase:@"emm.sqlite" path:path];以后再调用的时候直接用[JQFMDB shareDatabase],即可

JQFMDB * db = [JQFMDB shareDatabase:@"emm.sqlite" path:path];

//设置表名名:  (此处我写的很麻烦,是因为要对应用户ID,支持多用户登录,且要全局使用)<此处可以自己定义>

[[UULocalPersistenceUtil sharedInstance] setClientUserFileName:[NSString stringWithFormat:@"homeAppList%@",[UULocalPersistenceUtil sharedInstance].clientUserId]];

//建表:(此项目中需要两个表,一个应用列表,一个是已安装的应用列表)

static dispatch_once_t onceTok1;

                dispatch_once(&onceTok1, ^{

                    JQFMDB *db = [JQFMDB shareDatabase];

                    if (![db jq_isExistTable:@"appList"]) {

//可以直接以model形式建表,如果所写的model中的属性有特殊的,需要在 "JQFMDB.m"文件中     -(NSString *)propertTypeConvert:(NSString *)typeStr中做相应修改

                        [db jq_createTable:@"appList" dicOrModel:[UUModelAppInfo class]];

//查询所建表中的字段名

                        NSMutableArray * columnNameArr = [NSMutableArray arrayWithArray:[db jq_columnNameArray:@"appList"]];

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

                    }

                    if (![db jq_isExistTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName]) {

                        [db jq_createTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:[UUModelAppInfo class]];

                        NSMutableArray * columnNameArr = [NSMutableArray arrayWithArray:[db jq_columnNameArray:[UULocalPersistenceUtil sharedInstance].clientUserFileName]];

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

                        [self requestGetChangeFromPkgNameAndEdition];

                    }

                });




//读取数据库中表的数据;

JQFMDB *db = [JQFMDB shareDatabase];

//判断是否有存储信息

if ([db jq_isExistTable:@"appList"]) {

                    //format设置为nil,表示无条件查询所有的数据;

 NSArray *resultArr = [db jq_lookupTable:@"appList" dicOrModel:[UUModelAppInfo class] whereFormat:nil];               self.dataArray = [NSMutableArray arrayWithArray:resultArr];

 }





//插入数据:

JQFMDB * db = [JQFMDB shareDatabase];

//先判断是否有所需要的表存在

if(![db jq_isExistTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName]) {

  [db jq_createTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:[UUModelAppInfo class]];

                }

 [db jq_insertTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:cell.appInfoModel];

                

                

                

 //这个操作建议放在 - (void)viewDidDisappear:(BOOL)animated ,具体情况自己斟酌;

                JQFMDB *db = [JQFMDB shareDatabase];

                [db jq_deleteAllDataFromTable:@"appList"];   //删除所有的数据

                [db jq_insertTable:@"appList" dicOrModelArray:self.dataArray];  //插入新刷新的数据;





如果觉得还不错,点个赞呗!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值