使用数据库做缓存

1.首先建表:在SQCWorld这个项目中,需要的数据有首页展示和详细页数据,目前就这两个了。

2.首页展示的字段主要有:标题,图片,ID_main,创建时间;(ID_main的作用是筛选详细页的信息,作为外键)

3.详细页的字段主要有:文字,图片,ID_main,创建时间;

4.根据需要可以得出结论:建两个表,其实就是和parse的表一样了,呵呵。

5.第一步指定一个数据库路径:

#define PATH_OF_DOCUMENT    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]

    NSString * doc_two = PATH_OF_DOCUMENT;

    NSString * path_two = [doc_two stringByAppendingPathComponent:@"detail.sqlite"];

    self.dbPath_two = path_two;

6.第二步判断这个路径下有没有数据库,没有的话就创建,并且建表(在这里可以建多个表,但是路径是不会变的,刚才我弄错了,我还以为是一个路径一个表,结果错了)

if ([fileManager fileExistsAtPath:self.dbPath_two] == NO) {

        FMDatabase *dataBase = [FMDatabase databaseWithPath:self.dbPath_two];

        if ([dataBase open]) {

            NSString *sql = @"CREATE TABLE main (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , title VARCHAR,image VARCHAR,mainID VARCHAR,createtime VARCHAR)";

            BOOL result = [dataBase executeUpdate:sql];

            if (!result) {

                NSLog(@"create failed");

            }else {

                NSLog(@"succeed create table");

            }

            

            NSString *sql_two = @"CREATE TABLE detail (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , description VARCHAR,image VARCHAR,mainID VARCHAR)";

            BOOL result_two = [dataBase executeUpdate:sql_two];

            if (!result_two) {

                NSLog(@"create failed");

            }else {

                NSLog(@"succee create table_two");

            }

            

            [dataBase close];

        }else {

            NSLog(@"failed open dataBase");

        }

    }

6.模拟插入数据:由于需要缓存图片,而图片缓存我是这样做的,首先确定一个全局唯一的path,然后把图片的data写入到这个path里面就是writeToFile这个方法。而这个path就以main_id的形式来命名,id就是parse传过来的这条数据的唯一id。最后在数据库中插入数据的时候就把这个path插入即可,当读的时候就用imageWithContentsOfFile这个方法就行了。其它的文字数据就以对应的字段插入就去就好了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值