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
#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
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码