IOS开发-数据持久化(二)【sqlite数据库】

概要

本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致。

结果展示

(其实没啥看的)

流程概要

1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了

2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示

3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码。

主要代码

数据库操作代码

-(id)initWithFilePath:(NSString*)file
{
    self = [super init];
    if(self)
    {
        // 打开数据库,创建表
        sqlite3_open([file UTF8String], &_sqlite);
        NSString* cmd = [NSString stringWithFormat:@"CREATE TABLE staff(nickName TEXT, email TEXT PRIMARY KEY, phone TEXT, sex TEXT, position TEXT)"];

        sqlite3_exec(_sqlite, [cmd UTF8String], NULL, NULL, NULL);
    }
    return self;
}

-(void)sqliteSave
{
    NSString* cmd = [NSString stringWithFormat:@"INSERT INTO OR REPLACEstaff VALUES('%@','%@','%@','%@','%@');", self._nickName, self._email, self._phone, self._sex, self._position];

    sqlite3_exec(_sqlite, [cmd UTF8String], NULL, NULL, NULL);
}
-(void)sqliteLoad
{
    NSString* cmd = [NSString stringWithFormat:@"SELECT * FROM staff;"];

    int nRow = 0;
    int nCol = 0;
    char** pResult = NULL;
    int nRet = 0;

    nRet = sqlite3_get_table(_sqlite, [cmd UTF8String], &pResult, &nRow, &nCol, NULL);

    if(nRet == SQLITE_OK && nCol == 5)
    {
        // 第一行为字段名
        // 第二行才是数据
        int i = nCol;
        self._nickName = [NSString stringWithFormat:@"%s", pResult[i++]];
        self._email = [NSString stringWithFormat:@"%s", pResult[i++]];
        self._phone = [NSString stringWithFormat:@"%s", pResult[i++]];
        self._sex = [NSString stringWithFormat:@"%s", pResult[i++]];
        self._position = [NSString stringWithFormat:@"%s", pResult[i++]];
    }

}

- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:self._nickName forKey:@"nickName"];
    [aCoder encodeObject:self._email forKey:@"email"];
    [aCoder encodeObject:self._phone forKey:@"phone"];
    [aCoder encodeObject:self._sex forKey:@"sex"];
    [aCoder encodeObject:self._position forKey:@"position"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self._nickName = [aDecoder decodeObjectForKey:@"nickName"];
    self._email = [aDecoder decodeObjectForKey:@"email"];
    self._phone = [aDecoder decodeObjectForKey:@"phone"];
    self._sex = [aDecoder decodeObjectForKey:@"sex"];
    self._position = [aDecoder decodeObjectForKey:@"position"];
    return self;
}

工程代码(略)

时间: 2024-10-12 21:37:45

IOS开发-数据持久化(二)【sqlite数据库】的相关文章

iOS 中级数据持久化——简单的数据库(Sqlite3)

sqlite是嵌入式的和轻量级的sql数据库.sqlite是由c实现的.广泛用于包括浏览器(支持html5的大部分浏览器,ie除外).ios.android以及一些便携需求的小型web应用系统. 数据库无非就是增,删,改,查四种.除了查询以为,其他的三种方法比较类似 //使用数据库之前,打开数据库 - (void)openDB { if (db != nil) { return; } //数据库存储在沙河中的caches文件夹下 NSString * cachesPath = [NSSearch

IOS开发--数据持久化篇文件存储(二)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 承接上篇博客我们来看看IOS开发中是如何将一个自定义的对象进行归档的 本篇博客将介绍以下几个方面的内容 1)普通的单个对象归档操作 2)拥有继承关系的对象归档 3)同时将多个对象进行归档 1.普通的单个对象归档操作 首先我们来看下最简单的单个对象归档操作 1.自定义一个跟小明一样有名的类(

iOS开发——数据持久化OC篇&(二)属性列表

属性列表 属性列表文件是一种XML文件,Foundation框架中的数组和字典等都可以于属性列表文件相互转换. NSArray类常用读写属性列表文件的方法: +arrayWithContentsOfFile:类级构造方法,用于从属性列表文件中读取数据,创建NSArray对象. -initWithContentsOfFile:实例构造方法,用于从属性列表文件中读取数据,创建NSArray对象. -writeToFile:atomically:该方法把NSArray对象写入到属性列表文件中,第一个参

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

iOS开发——数据持久化OC篇&(七)CoreData高级常识

CoreData高级常识 关于CoreData貌似实际开发中很少用到,基本上是个有九个公司不会使用它,因为都说是性能不好,但是作为一个程序员,了解及其使用时必须了, 下面是我从一位大神那里搬过来的一下Core详细介绍,相信以后总有一天会帮我解决不少学习CoreData中的问题! 一.技术概览 1. Core Data 功能初窥 对于处理诸如对象生命周期管理.对象图管理等日常任务,Core Data框架提供了广泛且自动化的解决方案.它有以下特性. (注:对象图-Object graph的解释:在面

iOS开发——数据持久化OC篇&总结

数据持久化总结 1 //1.沙盒:/Users/nono/Library/Application Support/iPhone Simulator/5.1/Applications/2D135859-1E80-4754-B36D-34A53C521DE3 2 /** 3 // 1.获取程序的Home目录 4 NSString *home = NSHomeDirectory(); 5 NSLog(@"应用程序目录:%@", home); 6 7 // 2.获取Documents目录 8

iOS开发——数据持久化OC篇&(五)SQLite3详解

SQLite3详解 SQLite是嵌入式的和轻量级的SQL数据库.SQLite是由C实现的.广泛用于包括浏览器(支持HTML5的大部分浏览器,IE除外).iOS.Android以及一些便携需求的小型web应用系统. 1 使用原因:存储.检索信息 2 SQLite是MySQL精简版.但无需服务器就能进行. 3 两个限制:1)必须手动创建数据库 2)没有面向对象的接口. 4 如何手动创建数据库. 使用SQLite前的准备 使用SQLite是很多做iOS开发中第一次面对C的情况,包括我.因为SQLit

iOS开发——数据持久化OC篇&(三)对象归档

归档 iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 1 // 2 // YYViewController.m 3 /

iOS开发数据持久化技术01——NSUserDefault介绍

有疑问的请加qq交流群:390438081 我的QQ:604886384(注明来意) 微信:niuting823 首先说下什么是数据持久化技术 NSString *str = @"hello world"; ->内存 实际上就是将数据存储到硬盘上,针对于iOS应用程序是存储到沙盒中. . NSUserDefault介绍 1 是系统提供的自定义的类,可以随时在需要使用的地方声明对象,并随时需要的时候取出对象 2 支持的对象类型:NSString, NSNumber, NSData,