配置开发库FMDB支持加密、***.xcconfig的用法以及提供一个免费的数据库管理app

FMDB默认是不支持加密的,而且行业里也有提供加密的sqlite开发库,但大多数是需要收费的,并且支持加密的数据库管理应用也是收费。今天在这里我给大家集成一个免费的加密库,还支持跟FMDB对接的:SQLCipher,同时提供一个自己研发一个简单支持加密的数据库管理应用(mac版本)源码下载:

https://github.com/wuyoujian0313/SQLiteManager


要集成FMDB支持加密,就需要把SQLCipler集成进来,一般有两种方式(我个人采用第二种)

第一种,采用pod方式来集成:

platform :ios, '6.0'

target "FMDB-encrypt"do

pod 'FMDB'

pod 'FMDB/SQLCipher'

end


对于这种方式,大家可以百度一下;


第二种,采用源码的方式集成:

1、我们需要创建一个.xcconfig文件,里面输入:

SQLCIPHER_OTHER_CFLAGS = $(inherited) -DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE -DSQLCIPHER_CRYPTO_CC

OTHER_CFLAGS = $(inherited) ${SQLCIPHER_OTHER_CFLAGS}

上面的意思就是在工程的Build Settings里增一个配置同时修改一个配置;要试他生效就需要把这个xcconfig文件导入到工程里,然后在工程的project配置里的:如图配置:


只有导入工程里的xcconfig文件这里才能够看到到。编译一下工程,你可以去target的Building Settings里找到刚刚配置的那两项;这两项本质上就是给工程增加一个编译宏,因为SQLCipher的sqlite3.h和sqlite3.m以及FMDB里需要通过这些宏打开支持加密;


这里讲到了xcconfig文件,我们可以用于其他的一些配置,这些配置怎么找到,可以用文本的方式打开工程文件:xcodeproj里的配置文件,可以找到对应的Building Settings里的配置宏。


最后把SQLCipher的sqlite3.h和sqlite3.m导入到工程里,后面的使用,可以参考下面代码:


   BOOL bSuc = [selfopenDB:dbFile];

    if (!bSuc) {

        returnnil;

    }

    

    if(key !=nil && [key length] >0){

        [_dbsetKey:key];

    }


    [_dbsetShouldCacheStatements:YES];

    FMResultSet *rs = [_dbexecuteQuery:sql];




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FMDB的封装,使你的实体类具备数据库操作的功能,极大简化你的数据库操作,对于自己的扩展也非常简单。 该框架是本人在项目中用到的对FMDB的封装,它的特点如下: 1.自动创建数据库、自动创建数据库表。 2.自动检测字段添加新字段。 3.一行代码实现数据库的CURD操作。 4.源码及其简单,易于理解和掌握。 5.扩展自己的功能也非常得简单,容易。 6,只关心字段和字段值,完全不用关心数据库操作逻辑. 特别提示:字段值全部以字符串的形式统一处理 常用的api如下: /** 获取数据库单例函数 */ (instancetype)intance; /** 数据库中是否存在表 */ - (BOOL)isExistWithTableName:(NSString*)name; /** 默认建立主键id 创建表(如果存在则不创建) , keys 数据存放要求@[字段名称1,字段名称2] */ -(BOOL)createTableWithTableName:(NSString*)name keys:(NSArray*)keys; /** 插入 只关心key和value @{key:value,key:value} */ -(BOOL)insertIntoTableName:(NSString*)name Dict:(NSDictionary*)dict; /** 根据条件查询字段 返回的数组是字典( @[@{key:value},@{key:value}] ) ,where形式 @[@"key",@"=",@"value",@"key",@">=",@"value"] */ -(NSArray*)queryWithTableName:(NSString*)name keys:(NSArray*)keys where:(NSArray*)where; /** 全部查询 返回的数组是字典( @[@{key:value},@{key:value}] ) */ -(NSArray*)queryWithTableName:(NSString*)name; /** 根据key更新value 形式 @[@"key",@"=",@"value",@"key",@">=",@"value"] */ -(BOOL)updateWithTableName:(NSString*)name valueDict:(NSDictionary*)valueDict where:(NSArray*)where; /** 根据表名和表字段删除表内容 where形式 @[@"key",@"=",@"value",@"key",@">=",@"value"] */ -(BOOL)deleteWithTableName:(NSString*)name where:(NSArray*)where; /** 根据表名删除表格全部内容 */ -(BOOL)clearTable:(NSString*)name; /** 删除表 */ -(BOOL)dropTable:(NSString*)name;

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值