ios FMDB数据库

来源:互联网 发布:三轮士郎 知乎 编辑:程序博客网 时间:2024/09/21 09:02
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 MTDealToolstatic 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

0 0
原创粉丝点击