您的位置:首页 > 移动开发 > IOS开发

iOS Fmdb数据存储

2016-03-27 18:22 302 查看
fmdb经常用到,我感觉学习程序的人都会用到数据存储,可是每个语言开发用到的数据库理论是一样的,都是增,删,改,查,ios经常用到fmdb,1.先实例化一个#import <Foundation/Foundation.h>#import "FMDatabase.h"@interface LNFmdbDate : NSObject@property (nonatomic ,strong)FMDatabase *db;@end

#import "LNFmdbDate.h"
@implementation LNFmdbDate
- (instancetype)init{ if (self = [super init]) { NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"OfflineData.sqlite"]; self.db = [FMDatabase databaseWithPath:path]; } return self;}
@end2.继承上面的那个

#import "LNFmdbDate.h"
@interface LNSearchOffine : LNFmdbDate
/** * 快速获得实例 * * @return LNSearchOffine对象 */+ (instancetype)shareOffline;
/** * 向数据库表中添加名字 * * @param model 名字详情 * * @return 插入成功返回YES,失败返回NO */- (BOOL) inserData:(NSDictionary *)model anCity:(NSString *)cityName;
/** * 从数据库表中取出所有名字 * * @return 所有名字信息 */- (NSArray*)getAllData:(NSString *)cityName;/** * * * @return 判断是否收藏 */- (BOOL)isBleanOffineData:(NSString *)name anCity:(NSString *)cityName;

/** * 从数据库表中删除指定的名字 * * @param aName 指定的名字 * * @return 删除成功返回YES,失败返回NO */- (BOOL) deleteName:(NSString *)aName anCity:(NSString *)cityName;
/** * 从数据库表中名字 * * @return 删除成功返回YES,失败返回NO */- (BOOL) deleteDetail:(NSString *)cityName;
@end
#import "LNSearchOffine.h"
#define COLLECT @"t_Offtin"
@implementation LNSearchOffine
static id _instance;
+ (instancetype)shareOffline; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [[self alloc] init]; }); return _instance;}
- (instancetype)init{ if (self = [super init]) { // 打开数据库 if ([self.db open]) { NSLog(@"数据库打开成功"); // 创表 [self.db executeUpdateWithFormat:@"CREATE TABLE IF NOT EXISTS COLLECT (id integer NOT NULL PRIMARY KEY AUTOINCREMENT,city text,name text,data blob);"]; } else { NSLog(@"数据库打开失败"); } } return self;}
/** * 向数据库表中添加名字 * * @param station 名字详情 * * @return 插入成功返回YES,失败返回NO */- (BOOL) inserData:(NSDictionary *)model anCity:(NSString *)cityName;{ NSString *name = model[@"name"]; NSArray *resultArry = [self getAllStation:cityName]; for(NSDictionary *dicm in resultArry) { if([name isEqualToString:dicm[@"name"]]) { [self deleteStationWithStationName:name anCity:cityName]; } } NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:model forKey:@"SomekeyValue"]; [archiver finishEncoding]; BOOL result = [self.db executeUpdateWithFormat:@"INSERT INTO COLLECT (city,name,data) VALUES (%@,%@,%@);",cityName,name,data]; return result;}
/** * 从数据库表中取出所有名字 * * @return 所有名字信息 */- (NSArray*)getAllData:(NSString *)cityName;{ NSMutableArray * array = [NSMutableArray array]; FMResultSet *result = [self.db executeQueryWithFormat:@"SELECT * FROM COLLECT WHERE city =%@;",cityName]; while (result.next) { NSData *data = [result dataForColumn:@"data"]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; NSDictionary *myDictionary = [unarchiver decodeObjectForKey:@"SomekeyValue"]; [unarchiver finishDecoding]; [array addObject:myDictionary]; } return array;}
+ (instancetype)allocWithZone:(struct _NSZone *)zone{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); return _instance;}

- (BOOL)isBleanOffineData:(NSString *)name anCity:(NSString *)cityName;{ BOOL result = NO; NSArray *arry = [self getAllStation:cityName]; for(int i = 0 ;i<arry.count; ++i) { NSDictionary *dic = arry[i]; NSString *cityName = dic[@"name"]; if([name isEqualToString:cityName]) { return YES; } } return result;}
- (BOOL) deleteName:(NSString *)aName anCity:(NSString *)cityName; BOOL result = [self.db executeUpdateWithFormat:@"DELETE FROM COLLECT WHERE name =%@ and city = %@;",stationName,cityName]; return result;}
- (BOOL) deleteDetail:(NSString *)cityName;{ BOOL result = [self.db executeUpdateWithFormat:@"DELETE FROM COLLECT WHERE city =%@;",cityName]; return result;}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS