iOS海哥开发笔记 (海哥原创,数据存储篇之sqlite3的基本使用)

前言:

一.数据存储的方式:

1.plist: NSArray,NSString,NSDictionaryOC对象的存储)存储少量数据。

2.Preference: (偏好设置/NSUserDefaults存储一些软件设置,记住密码,自动登录等,存储少量数据。

3.归档NSKeyedArchiverNSKeyedUnarchiver)也是存储中小量数据  例如我们要归档缓存一些数据,归档文件时是归档全部的文件,读取文件的时候也是一口气读取全部的数据,如果数据量过大,内存直接爆满(不可取),当要更新数据的时候,也是重新全部归档,覆盖原有的文件,可操作性不好

4.SQLite3:数据库能够存储大批量的数据,优点如下

 >.是一款轻型(轻量级,占用内存小)的嵌入式(嵌入在移动设备上(手机,ipad,不是服务器)数据库

  >.运行速度快

  >.建议使用工具  Navicat工具 数据库管理软件,支持大部分数据库管理软件,能够实时查看数据库中的表,字段,纪录等,能更好的理解数据库的操作(自己下载)

   >.学前必备:懂得基本的数据库DDL,DML等基本使用语句,创建表,表的CRUD(增删改查,装B),本文不做介绍

5.CoreData:SQLite3的封装 (后续写入使用说明)


二.使用sqlite3

  1.创建新项目导入框架



2.工程中包含头文件

#import <sqlite3.h>

3.直接上工程代码

#import "ViewController.h"

#import <sqlite3.h>


@interface ViewController ()

{

    sqlite3 *_db;

}


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    //数据库文件存储的沙盒路径

    NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"t_student.sqlite"];

    NSLog(@"%@",filename);

    // 开启数据库

    // 参数 文件名,OC字符串转换为c的字符串filename.UTF8String参数2:传入数据库的地址

    int result = sqlite3_open(filename.UTF8String, &_db);

    // 返回的result结果,成功则创建表

    if (result == SQLITE_OK) {

        NSLog(@"数据库打开成功");

        //创建表的sql语句,设置主键,字段,字段格式,autoincrement(主键自动增长) text文本类型(字符串)ingeter(整型)等等

        const char *sql = "create table if not exists t_student (id integer primary key autoincrement, name text, age integer);";

        char *errmsg;

        sqlite3_exec(_db, sql, NULL, NULL, &errmsg);

        if (errmsg == SQLITE_OK) {

            NSLog(@"创建表成功");

            [self insertData];

        }else{

            NSLog(@"创建表失败");

        }

        

        

    }else{

        NSLog(@"数据库打开失败");

    }

    

    

}

// 插入数据

- (void)insertData

{

    NSLog(@"正在插入数据");

    // 插入30条数据

    for (int i = 0; i<30; i++) {

        NSString *name = [NSString stringWithFormat:@"zth-%d", arc4random()%100];

        // 年龄为随机值

        int age = arc4random()%100;

        NSString *sql = [NSString stringWithFormat:@"insert into t_student (name, age) values('%@', %d);", name, age];

        

        char *errorMesg = NULL;

        int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMesg);

        if (result == SQLITE_OK) {

            NSLog(@"成功添加数据");

        } else {

            NSLog(@"添加数据失败:%s", errorMesg);

        }

    }


}

@end



4.根据打印的沙盒路径查看数据库文件


5.打开数据库文件,navicat自动打开,这时候我们可以看到t_student学生表,以及插入的30条数据,



  最后,祝您操作成功,

  特殊补充:实际应用中,肯定不能把代码直接写在控制器中,应该创建学生模型文件,学生管理文件,面向对象开发(自己想咯,这里只提供思路)

  当然,sqlite3的使用特别烦琐,需要懂一些数据库语句,提供个第三方开源框架FMDB,操作相对简单(自己去摸索吧)。

  sqlite3,在性能方面还是非常顶呱呱的,因为底层直接是c语言,相比CoreData(核心数据,苹果自带框架)要好很多,大家都知道,封装起来的东西,用着简单,底层实现原理却不清楚,甚至会自动生成一堆用不到的代码。最后,希望能帮到你们,祝您查看愉快,工作顺利

 转载请注明原文链接




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值