// // DB_Helper.m // LNManager // // Created by EchoShacolee on 2017/4/12. // Copyright © 2017年 lee. All rights reserved. // #import "DBManager.h" #import @implementation DBManager { //数据库对象 FMDatabase *_database; } /** 创建数据库类的单例对象 **/ + (DBManager *)sharedManager { static DBManager *manager = nil; @synchronized(self) {//同步 执行 防止多线程操作 if (manager == nil) { manager = [[DBManager alloc] init]; } } return manager; } - (id)init { if (self = [super init]) { //1.获取数据库文件app.db的路径 NSString *filePath = [self getFileFullPathWithFileName:SQLITE_NAME]; //2.创建database _database = [[FMDatabase alloc] initWithPath:filePath]; //3.open //第一次 数据库文件如果不存在那么 会创建并且打开 //如果存在 那么直接打开 if ([_database open]) { // NSLog(@"数据库打开成功"); }else { NSLog(@"database open failed:%@",_database.lastErrorMessage); } } return self; } -(NSMutableArray*)getDqbhAndCtiyNameFromSqlite { /**从数据库找地址信息 */ NSMutableArray *questions=[[NSMutableArray alloc] init]; if ([_database open]) { NSString *sql = @"select * from area";//@"select * from area"] FMResultSet *s=[_database executeQuery:sql]; while ([s next]) { NSMutableDictionary* question = [NSMutableDictionary dictionary]; question[@"name"] = [s stringForColumn:@"name"]; question[@"code"] = [s stringForColumn:@"code"]; question[@"parent_code"] = [s stringForColumn:@"parent_code"]; [questions addObject:question]; } }else{ NSLog(@"ERROR: db unOpen"); } NSMutableArray *firArr = [NSMutableArray array];//市name【x市】 NSMutableArray *secArr = [NSMutableArray array];//地区对应dic【思明区的dic【编号。name】】; if ([SQLITE_NAME isEqualToString:@"miaxis.db"]) { //此处要求数据按顺序排列 for (NSDictionary *dic in questions) { if ([dic[@"parent_code"] isEqualToString:@"2100"]) { [firArr addObject:dic[@"name"]]; [secArr addObject:[NSMutableArray new]]; }else{ // secArr[firArr.count-1] 它们是有序的 [secArr[firArr.count-1] addObject:dic[@"name"]]; } } } if(![_database close]) { NSLog(@"数据库关闭异常,请检查");; } return [NSMutableArray arrayWithObjects:firArr,secArr,questions, nil]; } -(NSArray*)getAreaFromSqlite { NSMutableArray *questions=[[NSMutableArray alloc] init]; if ([_database open]) { NSString *sql = @"select * from area"; FMResultSet *s=[_database executeQuery:sql]; while ([s next]) { NSMutableDictionary *question = [NSMutableDictionary dictionary]; question[@"name"] = [s stringForColumn:@"name"]; question[@"code"] = [s stringForColumn:@"code"]; question[@"parent_code"] = [s stringForColumn:@"parent_code"]; [questions addObject:question]; } }else{ NSLog(@"ERROR: db unOpen"); } NSMutableArray *firArr = [NSMutableArray array];//市 NSMutableArray *secArr = [NSMutableArray array];//区 //此处要求数据按顺序排列 for (NSDictionary *dic in questions) { if ([dic[@"parent_code"] isEqualToString:@"2100"]) { [firArr addObject:dic]; [secArr addObject:[NSMutableArray array]]; }else{ // secArr[firArr.count-1] 它们是有序的 [secArr[firArr.count-1] addObject:dic]; } } if(![_database close]) { NSLog(@"数据库关闭异常,请检查");; } return @[firArr,secArr]; } #pragma mark - 获取文件的全路径 //获取文件在沙盒中的 Documents中的路径 - (NSString *)getFileFullPathWithFileName:(NSString *)fileName { NSString * bundlePath = [[NSBundle mainBundle]pathForResource:fileName ofType:@""]; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm fileExistsAtPath:bundlePath]) { // NSLog(@"%@",bundlePath); return bundlePath; }else { //如果不存在可以创建一个新的 NSLog(@"Documents不存在"); return nil; } } @end