加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数据持久化之sqlite

发布时间:2020-12-12 23:59:23 所属栏目:百科 来源:网络整理
导读:从软件的角度来说,程序运行过程中,通常都是把数据存放在变量,数组,字典等,也就是程序运行时候开辟的一块内存空间,但是随着程序的关闭,这块内存空间也跟着消失,数据也随即丢失。因此,我们需要把数据保存起来。这样就有了数据存储的动因。 从硬件的角

从软件的角度来说,程序运行过程中,通常都是把数据存放在变量,数组,字典等,也就是程序运行时候开辟的一块内存空间,但是随着程序的关闭,这块内存空间也跟着消失,数据也随即丢失。因此,我们需要把数据保存起来。这样就有了数据存储的动因。

从硬件的角度来讲,随着电路的断开,内存(RAM)上的数据也随即消失,只有硬盘上的数据能保存,因此,需要数据持久化。同时,内存空间往往也比硬盘空间小的多。

数据持久化,就是把数据保存起来,以便下次打开应用程序,还能获取这些数据,也称为数据存储等。

数据库和编程语言,可以看成是两个对象,编程语言通过一些手段(类库,插件等),连接数据库,操作数据库。

OC中使用sqlite数据库,首先需要连接数据库。

+(sqlite3 *)openDB:(NSString *)dbname postFix:(NSString *)postFix
{
    if (dbPoint)
    {
        return dbPoint;
    }
    else
    {
        NSString * docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];
        NSString * sqlFilePath = [docPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",dbname,postFix]];
        NSString * orignFilePath = [[NSBundle mainBundle]pathForResource:dbname ofType:postFix];
        NSLog(@"目标路径:%@,原始路径:%@",sqlFilePath,orignFilePath);
        
        NSFileManager * fm = [NSFileManager defaultManager];
        if ([fm fileExistsAtPath:sqlFilePath] == NO)
        {
            NSError * error = nil;
            if ([fm copyItemAtPath:orignFilePath toPath:sqlFilePath error:&error]==NO) {
                NSLog(@"open dataBase error:%@",[error localizedDescription]);
                return nil;
            }
        }
        NSLog(@"open DB at path:%@",sqlFilePath);
        sqlite3_open([sqlFilePath UTF8String],&dbPoint);
        return dbPoint;
    }
}

最后使用完成需要关闭数据库。

+(void) closeDB
{
    if(dbPoint)
    {
        sqlite3_close(dbPoint);
    }
}

这里是两个类方法,直接头文件我就不贴出来了。

一般都把连接数据库封装成一个类,直接调用就可以了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读