ios FMDB数据库
2016-01-07 14:15
302 查看
ios FMDB数据库
注意:一定要添加FMDB库
1.创建工具类
MTDealTool.h
直接调用方法就行,类似sqlite
注意:一定要添加FMDB库
1.创建工具类
MTDealTool.h
#import <Foundation/Foundation.h> @class MTDeal; @interface MTDealTool : NSObject /** * 返回第page页的收藏团购数据:page从1开始 */ + (NSArray *)collectDeals:(int)page; + (int)collectDealsCount; /** * 收藏一个团购 */ + (void)addCollectDeal:(MTDeal *)deal; /** * 取消收藏一个团购 */ + (void)removeCollectDeal:(MTDeal *)deal; /** * 团购是否收藏 */ + (BOOL)isCollected:(MTDeal *)deal; @endMTDealTool.m
#import "MTDealTool.h" #import "FMDB.h" #import "MTDeal.h" @implementation MTDealTool static FMDatabase *_db; + (void)initialize { // 1.打开数据库 NSString *file = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"deal.sqlite"]; _db = [FMDatabase databaseWithPath:file]; if (![_db open]) return; // 2.创表 [_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_collect_deal(id integer PRIMARY KEY, deal blob NOT NULL, deal_id text NOT NULL);"]; [_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_recent_deal(id integer PRIMARY KEY, deal blob NOT NULL, deal_id text NOT NULL);"]; } + (NSArray *)collectDeals:(int)page { int size = 20; int pos = (page - 1) * size; FMResultSet *set = [_db executeQueryWithFormat:@"SELECT * FROM t_collect_deal ORDER BY id DESC LIMIT %d,%d;", pos, size]; NSMutableArray *deals = [NSMutableArray array]; while (set.next) { MTDeal *deal = [NSKeyedUnarchiver unarchiveObjectWithData:[set objectForColumnName:@"deal"]]; [deals addObject:deal]; } return deals; } + (void)addCollectDeal:(MTDeal *)deal { NSData *data = [NSKeyedArchiver archivedDataWithRootObject:deal]; [_db executeUpdateWithFormat:@"INSERT INTO t_collect_deal(deal, deal_id) VALUES(%@, %@);", data, deal.deal_id]; } + (void)removeCollectDeal:(MTDeal *)deal { [_db executeUpdateWithFormat:@"DELETE FROM t_collect_deal WHERE deal_id = %@;", deal.deal_id]; } + (BOOL)isCollected:(MTDeal *)deal { FMResultSet *set = [_db executeQueryWithFormat:@"SELECT count(*) AS deal_count FROM t_collect_deal WHERE deal_id = %@;", deal.deal_id]; [set next]; //#warning 索引从1开始 return [set intForColumn:@"deal_count"] == 1; } + (int)collectDealsCount { FMResultSet *set = [_db executeQueryWithFormat:@"SELECT count(*) AS deal_count FROM t_collect_deal;"]; [set next]; return [set intForColumn:@"deal_count"]; } @end2.调用工具类中的方法
直接调用方法就行,类似sqlite
相关文章推荐
- Sqoop实现MySql/Oracle与Hdfs/Hbase互导数据
- MySql的二进制日志,重做日志笔记,UndoLog
- Oracle 计算两个时间的差值
- ORACLE常用命令
- Oracle_Alter_详解
- 关于脏数据比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时
- oracle sqlplus 常用命令大全
- MySQL-Proxy实现MySQL读写分离提高并发负载
- Mysql主从复制
- SQL正常工作日上班安排
- ”check the manual that corresponds to your MySQL server version for the right syntax to use“解决
- SQLMAP 使用手册
- Mysql中间件
- 从运维角度浅谈 MySQL 数据库优化
- Memcached CAS协议 通过版本号,防止多线程修改错误
- MYSQL提权的各种姿势
- mysql 左,右,内连接
- Oracle常用命令大全
- mysql null和‘ ’
- 【转】oracle中in和exists的区别