123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- //
- // DB_Helper.m
- // LNManager
- //
- // Created by EchoShacolee on 2017/4/12.
- // Copyright © 2017年 lee. All rights reserved.
- //
- #import "DBManager.h"
- #import <FMDB/FMDB.h>
- @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
|