DBManager.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. //
  2. // DB_Helper.m
  3. // LNManager
  4. //
  5. // Created by EchoShacolee on 2017/4/12.
  6. // Copyright © 2017年 lee. All rights reserved.
  7. //
  8. #import "DBManager.h"
  9. #import <FMDB/FMDB.h>
  10. @implementation DBManager
  11. {
  12. //数据库对象
  13. FMDatabase *_database;
  14. }
  15. /**
  16. 创建数据库类的单例对象
  17. **/
  18. + (DBManager *)sharedManager {
  19. static DBManager *manager = nil;
  20. @synchronized(self) {//同步 执行 防止多线程操作
  21. if (manager == nil) {
  22. manager = [[DBManager alloc] init];
  23. }
  24. }
  25. return manager;
  26. }
  27. - (id)init {
  28. if (self = [super init]) {
  29. //1.获取数据库文件app.db的路径
  30. NSString *filePath = [self getFileFullPathWithFileName:SQLITE_NAME];
  31. //2.创建database
  32. _database = [[FMDatabase alloc] initWithPath:filePath];
  33. //3.open
  34. //第一次 数据库文件如果不存在那么 会创建并且打开
  35. //如果存在 那么直接打开
  36. if ([_database open]) {
  37. // NSLog(@"数据库打开成功");
  38. }else {
  39. NSLog(@"database open failed:%@",_database.lastErrorMessage);
  40. }
  41. }
  42. return self;
  43. }
  44. -(NSMutableArray*)getDqbhAndCtiyNameFromSqlite
  45. {
  46. /**从数据库找地址信息
  47. */
  48. NSMutableArray *questions=[[NSMutableArray alloc] init];
  49. if ([_database open]) {
  50. NSString *sql = @"select * from area";//@"select * from area"]
  51. FMResultSet *s=[_database executeQuery:sql];
  52. while ([s next]) {
  53. NSMutableDictionary* question = [NSMutableDictionary dictionary];
  54. question[@"name"] = [s stringForColumn:@"name"];
  55. question[@"code"] = [s stringForColumn:@"code"];
  56. question[@"parent_code"] = [s stringForColumn:@"parent_code"];
  57. [questions addObject:question];
  58. }
  59. }else{
  60. NSLog(@"ERROR: db unOpen");
  61. }
  62. NSMutableArray *firArr = [NSMutableArray array];//市name【x市】
  63. NSMutableArray *secArr = [NSMutableArray array];//地区对应dic【思明区的dic【编号。name】】;
  64. if ([SQLITE_NAME isEqualToString:@"miaxis.db"]) {
  65. //此处要求数据按顺序排列
  66. for (NSDictionary *dic in questions) {
  67. if ([dic[@"parent_code"] isEqualToString:@"2100"]) {
  68. [firArr addObject:dic[@"name"]];
  69. [secArr addObject:[NSMutableArray new]];
  70. }else{
  71. // secArr[firArr.count-1] 它们是有序的
  72. [secArr[firArr.count-1] addObject:dic[@"name"]];
  73. }
  74. }
  75. }
  76. if(![_database close]) {
  77. NSLog(@"数据库关闭异常,请检查");;
  78. }
  79. return [NSMutableArray arrayWithObjects:firArr,secArr,questions, nil];
  80. }
  81. -(NSArray*)getAreaFromSqlite {
  82. NSMutableArray *questions=[[NSMutableArray alloc] init];
  83. if ([_database open]) {
  84. NSString *sql = @"select * from area";
  85. FMResultSet *s=[_database executeQuery:sql];
  86. while ([s next]) {
  87. NSMutableDictionary *question = [NSMutableDictionary dictionary];
  88. question[@"name"] = [s stringForColumn:@"name"];
  89. question[@"code"] = [s stringForColumn:@"code"];
  90. question[@"parent_code"] = [s stringForColumn:@"parent_code"];
  91. [questions addObject:question];
  92. }
  93. }else{
  94. NSLog(@"ERROR: db unOpen");
  95. }
  96. NSMutableArray *firArr = [NSMutableArray array];//市
  97. NSMutableArray *secArr = [NSMutableArray array];//区
  98. //此处要求数据按顺序排列
  99. for (NSDictionary *dic in questions) {
  100. if ([dic[@"parent_code"] isEqualToString:@"2100"]) {
  101. [firArr addObject:dic];
  102. [secArr addObject:[NSMutableArray array]];
  103. }else{
  104. // secArr[firArr.count-1] 它们是有序的
  105. [secArr[firArr.count-1] addObject:dic];
  106. }
  107. }
  108. if(![_database close]) {
  109. NSLog(@"数据库关闭异常,请检查");;
  110. }
  111. return @[firArr,secArr];
  112. }
  113. #pragma mark - 获取文件的全路径
  114. //获取文件在沙盒中的 Documents中的路径
  115. - (NSString *)getFileFullPathWithFileName:(NSString *)fileName {
  116. NSString * bundlePath = [[NSBundle mainBundle]pathForResource:fileName ofType:@""];
  117. NSFileManager *fm = [NSFileManager defaultManager];
  118. if ([fm fileExistsAtPath:bundlePath]) {
  119. // NSLog(@"%@",bundlePath);
  120. return bundlePath;
  121. }else {
  122. //如果不存在可以创建一个新的
  123. NSLog(@"Documents不存在");
  124. return nil;
  125. }
  126. }
  127. @end