#import <Foundation/Foundation.h>
#import "HXStockModel.h"
@interface DataBaseSimple : NSObject
+(id)sharedInstance;
- (BOOL)insertIntoDB:(HXStockModel *)model;
- (BOOL)deleteFromDBWithKey:(int)key;
- (BOOL)updateFromDBWithKey:(int)key andModel:(HXStockModel *)model;
- (HXStockModel *)selectFromDBWithKey:(int)key;
- (NSArray *)selectFromDB;
- (BOOL)cleanDB;
@end
.m文件
#import "DataBaseSimple.h"
#import "FMDatabaseQueue.h"
#import "FMDatabase.h"
@implementation DataBaseSimple
{
FMDatabaseQueue * _dataBaseQueue;
}
+(id)sharedInstance
{
static id _s;
//多线程对self加锁,oc关键词 单例写法
@synchronized(self){
if (_s==nil) {
_s = [[[self class]alloc]init];
}
}
return _s;
}
- (instancetype)init
{
self = [super init];
if (self) {
// 创建 打开数据库 创建表
NSArray * arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * path = [arr objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"Stock.db"];
NSLog(@"path is %@...",path);
_dataBaseQueue = [FMDatabaseQueue databaseQueueWithPath:path];
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
if (![db open]) {
NSLog(@"can not open dataBase!");
return;
}
[db executeUpdate:@"CREATE TABLE if not exists StockInfo (ID integer PRIMARY KEY AUTOINCREMENT,stockName text,StockCode text,stockURLCode text)"];
}];
}
return self;
}
- (BOOL)insertIntoDB:(HXStockModel *)model
{
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
BOOL flag = [db executeUpdate:@"insert into StockInfo (stockName,StockCode,stockURLCode) values (?,?,?)",model.stockName,model.StockCode,model.stockURLCode];
if (flag) {
NSLog(@"插入成功");
}else{
NSLog(@"插入失败");
}
}];
return YES;
}
- (BOOL)deleteFromDBWithKey:(int)key
{
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
BOOL flag = [db executeUpdate:@"delete from StockInfo where ID=?",[NSNumber numberWithInt:key]];
if (flag) {
NSLog(@"删除成功");
}else{
NSLog(@"删除失败");
}
}];
return YES;
}
- (BOOL)updateFromDBWithKey:(int)key andModel:(HXStockModel *)model
{
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
BOOL flag = [db executeUpdate:@"update StockInfo set stockName=?,StockCode=?,stockURLCode=? where ID=?",model.stockName,model.StockCode,model.stockURLCode,[NSNumber numberWithInt:key]];
if (flag) {
NSLog(@"修改成功");
}else{
NSLog(@"修改失败");
}
}];
return YES;
}
- (HXStockModel *)selectFromDBWithKey:(int)key
{
__block HXStockModel * model = [[HXStockModel alloc] init];
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
FMResultSet * rs = [db executeQuery:@"select * from StockInfo where ID=?",[NSNumber numberWithInt:key]];
while ([rs next]) {
model.ID = key;
model.stockName = [rs stringForColumn:@"stockName"];
model.StockCode = [rs stringForColumn:@"StockCode"];
model.stockURLCode = [rs stringForColumn:@"stockURLCode"];
}
}];
return model;
}
- (NSArray *)selectFromDB
{
__block NSMutableArray * arr = [NSMutableArray array];
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
FMResultSet * rs = [db executeQuery:@"select * from StockInfo"];
while ([rs next]) {
HXStockModel * model = [[HXStockModel alloc] init];
model.ID = [rs intForColumn:@"ID"];
model.stockName = [rs stringForColumn:@"stockName"];
model.StockCode = [rs stringForColumn:@"StockCode"];
model.stockURLCode = [rs stringForColumn:@"stockURLCode"];
[arr addObject:model];
}
}];
return [arr copy];
}
- (BOOL)cleanDB
{
[_dataBaseQueue inDatabase:^(FMDatabase *db) {
BOOL flag = [db executeUpdate:@"delete from StockInfo"];
if (flag) {
NSLog(@"清空");
}else{
NSLog(@"清空失败");
}
}];
return YES;
}
@end