OC_FMDB有'深度'的DEMO
来源:互联网 发布:啥软件下种子 编辑:程序博客网 时间:2024/03/28 17:36
一、简单介绍
一)、FMDB框架中重要的框架类
FMDatabase
FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句
FMResultSet
使用FMDatabase执行查询后的结果集
FMDatabaseQueue
用于在多线程中执行多个查询或更新,它是线程安全的
二)、FMDB思维导图
二、使用
一)、封装结构
二)、模块代码
- DBHeader.h
/** 表名 */`#define KTable_UserName1 @"KTable_UserName1"/** 一个存数据库需要的头文件 */#import "FMDB.h"#import "DAO.h"#import "DataBaseManager.h"
- DataBaseManager.h
@implementation DataBaseManager//单例+(instancetype)sharedManager{ static DataBaseManager *manager = nil; static dispatch_once_t once; dispatch_once(&once, ^{ manager = [[DataBaseManager alloc] init]; }); return manager;}- (instancetype)init{ if (self = [super init]) { NSString *docDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *filePath = [docDir stringByAppendingPathComponent:@"DB1.sqlite"]; NSLog(@"路径 = %@",filePath); _databaseQueue = [FMDatabaseQueue databaseQueueWithPath:filePath]; } return self;}@end
- DAO.m
- (FMDatabaseQueue *)databaseQueue{ return [DataBaseManager sharedManager].databaseQueue;;}+ (void)creatTableIfNeed{ //【注意】:以后做sql语句,()外面的参数用字符串拼,()里面的参数放在执行方法里写 NSString *sql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, score REAL,arr BLOB,dic BLOB,book BLOB,img BLOB)",KTable_UserName1]; [[DataBaseManager sharedManager].databaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) { if ([db executeUpdate:sql]) { NSLog(@"创建表成功"); } }];}
- UserDAO.h
@interface UserDAO : DAO //一定要继承DAO,不然self点不出来databaseQueue的///单例+(instancetype)sharedInstance;/*! * 插入数据 */- (BOOL)insertUserDTO:(UserDTO *)dto;/*! * 获取数据 */- (NSArray *)loadUserData;/*! * 修改数据 */- (BOOL)updateUserDTO:(UserDTO *)dto;/*! * 删除某个模型 */- (BOOL)deleteUserDTO:(UserDTO *)dto;@end
三)、常用sql语句
创建表
CREATE TABLE IF NOT EXISTS "T_Person" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT, "age" INTEGER, "heigth" REAL)//下边是sqllite编译器里边的语句/*简单约束*/CREATE TABLE IF NOT EXISTS t_student( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);CREATE TABLE IF NOT EXISTS t_student( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE, age INTEGER);/*添加主键*/CREATE TABLE IF NOT EXISTS t_student( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, score REAL);/*添加主键*/CREATE TABLE IF NOT EXISTS t_student( id INTEGER, name TEXT, age INTEGER, score REAL, PRIMARY KEY(id));
查询
/*分页*/ SELECT * FROM t_student ORDER BY id ASC LIMIT 30, 10; /*排序*/ SELECT * FROM t_student WHERE score > 50 ORDER BY age DESC; SELECT * FROM t_student WHERE score < 50 ORDER BY age ASC , score DESC; /*计量*/ SELECT COUNT(*) FROM t_student WHERE age > 50; /*别名*/ SELECT name as myName, age as myAge, score as myScore FROM t_student; SELECT name myName, age myAge, score myScore FROM t_student; SELECT s.name myName, s.age myAge, s.score myScore FROM t_student s WHERE s.age > 50; /*查询*/ SELECT name, age, score FROM t_student; SELECT * FROM t_student;
更新
UPDATE t_student SET name = 'MM' WHERE age = 10; UPDATE t_student SET name = 'WW' WHERE age is 7; UPDATE t_student SET name = 'XXOO' WHERE age < 20; UPDATE t_student SET name = 'NNMM' WHERE age < 50 and score > 10; /*更新记录的name*/ UPDATE t_student SET name = 'zhangsan';
删除
DELETE FROM t_student; DELETE FROM t_student WHERE age < 50;
插入
INSERT INTO t_student (age, score, name) VALUES ('28', 100, 'zhangsan'); INSERT INTO t_student (name, age) VALUES ('lisi', '28'); INSERT INTO t_student (score) VALUES (100);
删除表
/*删除表*/ DROP TABLE IF EXISTS t_student;
文/Se7ven(简书作者)
原文链接:http://www.jianshu.com/p/502716a7728b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/502716a7728b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
- OC_FMDB有'深度'的DEMO
- 深度学习-有意义的demo
- 有深度的博客
- 深度学习一些有意思的demo
- 一张有深度的图片!
- 有深度的报道--柴静
- 有深度的文章站点
- 有深度的面试题
- Toast的各类用法大全(有Demo)
- List深度拷贝 demo
- 非常有深度的冷笑话
- 一个很有深度的Android Blog
- 有专业深度需要思考的笑话
- 悟透JavaScript-很有深度的文章
- 一个很有深度的Android Blog
- 有深度的程序员面试题
- 颇有深度的十九句话
- 好多有技术深度的好文章
- [NOI2009]管道取珠 解题报告
- 滚轮事件
- 5-24 约分最简分式 (15分)
- 框架对象事件
- servlet中load-on-startup的用法
- OC_FMDB有'深度'的DEMO
- 取消冒泡
- 选择最适合你的Linux学习方法
- javascript 常用技巧
- 使用onfocus实现输入框的placeholder
- jvm优雅关闭:
- 思讯823错误
- 人工智能常用 API
- Activity四种启动模式