iOS 数据库存储

一、SQL数据库简单知识
常见数据类型:

  • integer 整数
  • real 浮点
  • text 文本字符串
  • blob 二进制数据(文件)

1.建表

create table if not exists t_student;

2.创建一张包含外键引用的表

create table if not exists  ’t_student’(id integer primary key autoincrement, class_id integer, constraint “fk_student” foreign key (class_id) references “t_class”(id));

3.删表

drop table if exists t_student;

4.创建表时可以给特定的字段设置一些约束条件,常见的约束条件有
not null 规定字符值不能为null
unique 规定字段值唯一
default 指定字段默认值

5.select查询数据库
(1).limit限制

select * from t_student limit 3, 5;  // 查询5条记录,从第3条记录开始;
select * from t_student limit 5;  // 查询5条记录(没有起始条件);

(2).多表查询

select * from t_food where food_type_id = (select id from t_food_type where name=“cc”);

(3).表连接查询

select f.name ft.name from t_food as f, t_food_type as ft where f.food_type_id = ft.id and ft.name = “cc”;

二、sqlite3.h
依赖库:libsqlite3.dylib
1.创建数据库实例

// 数据库实例
sqlite3 *db; 
// 数据库文件路径
NSString *filename; 
const char *cfilename = filename.UTF8String; // 将OC字符串转换成为C语言字符串;

2.打开数据库(如果数据库文件不存在,sqlite3_open函数会自动创建数据库文件)

int result = sqlite3_open(cfilename, $db);  
    if(result == SQLITE_OK)  // 打开成功

3.创建数据库表

char *errorMsg = NULL;  // 错误信息
int result = sqlite3_exec(db, sql, NULL, NULL, &errorMsg);
    if(result == SQLITE_OK)  // 创建表成功

4.插入数据

sqlite3_exec(db, sql, NULL, NULL, &errorMsg);
    if(errorMsg)  // 创建失败

5.查询数据

sqlite3_stmt *stmt = NULL;  // 用来存储数据
// 查询数据,第三个参数表示sql语句的长度,传-1代表系统会自动计算SQL语句的长度
int result = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if(result == SQLITE_OK)  // 查询成功
// 读取数据,每调用一次此函数,stmt则会指向下一条记录
while(sqlite3_step(stmt) == SQLITE_ROW){  // 找到一条记录
    // 取出数据
    int ID = sqlite3_column_int(stmt, 0);  // 取出第0列的字段的值;
    // 取出第一列数据,该数据类型为text
    const unsigned char *name = sqilte3_column_text(stmt, 1);
}

三、FMDB
1.获取数据库实例对象

FMDatabase *db = [FMDataBase databaseWithPath:filename];
[db open];

2.执行一段sql语句

BOOL result = [db executeUpdate:@“”];
// sql语句传参
[db executeUpdate:@“INSERT INTO t_student (name, age) VALUES (?, ?);”, name, @(12)];
[db executeUpdateWithFormat:@“INSERT INTO t_student (name, age) VALUES (%@, %d)”, name, 12];

3.查询

// 执行查询语句
FMResultSet *resultSet = [db executeQuery:@“SELECT * FROM t_student”];
while([resultSet next]){
    int ID = [resultSet intForColumn:@“age”];
    NSString *name = [result stringForColumn:@“name”];
    NSDictionary *dict = [result objectForColumnName:@“data”];  // 获取对象
}

4.数据库事务

FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filename];
[queue inDatabase:^(FMDatabase *db){
    BOOL result = [db executeUpdate:@“…”];
}];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值