您的位置:首页 > 数据库

ios FMDB数据库

2016-01-07 14:15 302 查看
ios FMDB数据库

注意:一定要添加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;
@end
MTDealTool.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"];
}

@end
2.调用工具类中的方法

直接调用方法就行,类似sqlite
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: