// // ChinaArea.m // 地址选择器 // // Created by zhuming on 16/2/15. // Copyright © 2016年 zhuming. All rights reserved. // #import "ChinaArea.h" @interface ChinaArea () @property (nonatomic,strong)FMDatabaseQueue *fmdbQueue; @property (nonatomic,strong)FMDatabase *dataBase; @property (nonatomic,copy)NSString *dbPath; @end @implementation ChinaArea - (instancetype)init{ if (self = [super init]) { [self initDataBase]; // [self creatProvinceTabel]; // [self creatCityTabel]; // [self creatAreaTabel]; } return self; } /** * 初始化数据库 */ - (void)initDataBase{ self.dbPath=[[NSBundle mainBundle]pathForResource:@"china_citys_name.db" ofType:nil]; self.fmdbQueue = [[FMDatabaseQueue alloc] initWithPath:self.dbPath]; self.dataBase = [[FMDatabase alloc] initWithPath:self.dbPath]; } /** * 创建省份表单 */ - (void)creatProvinceTabel{ [self.dataBase open]; [self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS Province (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"]; [self.dataBase close]; } /** * 创建城市表单 */ - (void)creatCityTabel{ [self.dataBase open]; [self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS City (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"]; [self.dataBase close]; } /** * 创建区域表单 */ - (void)creatAreaTabel{ [self.dataBase open]; [self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS Area (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"]; [self.dataBase close]; } /** * 插入省份数据 * * @param province 省份模型 */ - (void)insterProvince:(ProvinceModel *)province{ [self.fmdbQueue inDatabase:^(FMDatabase *db) { [db open]; [db executeUpdate:@"INSERT INTO Province (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",province.GRADE,province.ID,province.NAME,province.PARENT_AREA_ID]; [db close]; }]; } /** * 插入城市数据 * * @param city 城市模型 */ - (void)insterCity:(CityModel *)city{ [self.fmdbQueue inDatabase:^(FMDatabase *db) { [db open]; [db executeUpdate:@"INSERT INTO City (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",city.GRADE,city.ID,city.NAME,city.PARENT_AREA_ID]; [db close]; }]; } /** * 插入区域数据 * * @param area 区域模型 */ - (void)insterArea:(AreaModel *)area{ [self.fmdbQueue inDatabase:^(FMDatabase *db) { [db open]; [db executeUpdate:@"INSERT INTO Area (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",area.GRADE,area.ID,area.NAME,area.PARENT_AREA_ID]; [db close]; }]; } /** * 获取所有省份模型的集合数组 * * @return 返回所有省份数据模型的集合 */ - (NSMutableArray *)getAllProvinceData{ NSMutableArray *provinceArray = [[NSMutableArray alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM Province"]; while ([result next]) { ProvinceModel *model = [[ProvinceModel alloc] init]; model.GRADE = [result stringForColumn:@"GRADE"]; model.ID = [result stringForColumn:@"ID"]; model.NAME = [result stringForColumn:@"NAME"]; model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; [provinceArray addObject:model]; } [db close]; }]; return provinceArray; } /** * 根据省份ID获取对应的省份数据模型 * * @param provinceID 省份ID * * @return 省份数据模型 */ - (ProvinceModel *)getProvinceDataByID:(NSString *)provinceID{ ProvinceModel *pmodel = [[ProvinceModel alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM Province WHERE ID = ?",provinceID]; while ([result next]) { pmodel.GRADE = [result stringForColumn:@"GRADE"]; pmodel.ID = [result stringForColumn:@"ID"]; pmodel.NAME = [result stringForColumn:@"NAME"]; pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; } [db close]; }]; return pmodel; } /** * 根据省份ID获取该省份的所有城市数据模型的集合 * * @param parentID 省份ID * * @return 一个省份的城市数据模型集合 */ - (NSMutableArray *)getCityDataByParentID:(NSString *)parentID{ NSMutableArray *cityArray = [[NSMutableArray alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM City WHERE PARENT_AREA_ID = ?",parentID]; while ([result next]) { CityModel *model = [[CityModel alloc] init]; model.GRADE = [result stringForColumn:@"GRADE"]; model.ID = [result stringForColumn:@"ID"]; model.NAME = [result stringForColumn:@"NAME"]; model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; [cityArray addObject:model]; } [db close]; }]; return cityArray; } /** * 根据城市ID获取对应的城市数据模型 * * @param cityID 城市ID * * @return 城市数据模型 */ - (CityModel *)getCityDataByID:(NSString *)cityID{ CityModel *pmodel = [[CityModel alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM City WHERE ID = ?",cityID]; while ([result next]) { pmodel.GRADE = [result stringForColumn:@"GRADE"]; pmodel.ID = [result stringForColumn:@"ID"]; pmodel.NAME = [result stringForColumn:@"NAME"]; pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; } [db close]; }]; return pmodel; } /** * 根据城市ID获取该城市的所有区域数据模型的集合 * * @param parentID 城市ID * * @return 一个城市的区域数据模型集合 */ - (NSMutableArray *)getAreaDataByParentID:(NSString *)parentID{ NSMutableArray *areaArray = [[NSMutableArray alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM Area WHERE PARENT_AREA_ID = ?",parentID]; while ([result next]) { AreaModel *model = [[AreaModel alloc] init]; model.GRADE = [result stringForColumn:@"GRADE"]; model.ID = [result stringForColumn:@"ID"]; model.NAME = [result stringForColumn:@"NAME"]; model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; [areaArray addObject:model]; } [db close]; }]; return areaArray; } /** * 根据地区ID获取对应的地区数据模型 * * @param areaID 地区ID * * @return 地区数据模型 */ - (AreaModel *)getAreaDataByID:(NSString *)areaID{ AreaModel *pmodel = [[AreaModel alloc] init]; [self.fmdbQueue inDatabase:^(FMDatabase *db) { [self openChinaAreaDB:db]; FMResultSet *result = [db executeQuery:@"SELECT * FROM Area WHERE ID = ?",areaID]; while ([result next]) { pmodel.GRADE = [result stringForColumn:@"GRADE"]; pmodel.ID = [result stringForColumn:@"ID"]; pmodel.NAME = [result stringForColumn:@"NAME"]; pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"]; } [db close]; }]; return pmodel; } /** * 打开数据库 * * @param db db description */ - (void)openChinaAreaDB:(FMDatabase *)db{ BOOL isOpen = [db open]; if (isOpen == YES) { // ITLog(@"数据库ChinaArea.db 打开成功!\n路径 = %@",self.dbPath); } else{ // ITLog(@"数据库ChinaArea.db 打开失败!\n路径 = %@",self.dbPath); } } /** * 制作省份数据模型 * * @param GRADE GRADE * @param ID 省份ID * @param NAME 省份名称 * @param PARENT_AREA_ID 上一级ID * * @return 省份数据模型 */ - (ProvinceModel *)makeProvinceModel:(NSNumber *)GRADE provinceID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{ ProvinceModel *model = [[ProvinceModel alloc] init]; model.GRADE = [NSString stringWithFormat:@"%@",GRADE]; model.ID = [NSString stringWithFormat:@"%@",ID]; model.NAME = NAME; model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID]; return model; } /** * 制作城市数据模型 * * @param GRADE GRADE * @param ID 城市ID * @param NAME 城市名称 * @param PARENT_AREA_ID 上一级省份ID * * @return 城市数据模型 */ - (CityModel *)makeCityModel:(NSNumber *)GRADE cityID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{ CityModel *model = [[CityModel alloc] init]; model.GRADE = [NSString stringWithFormat:@"%@",GRADE]; model.ID = [NSString stringWithFormat:@"%@",ID]; model.NAME = NAME; model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID]; return model; } /** * 制作区域数据模型 * * @param GRADE GRADE * @param ID 区域ID * @param NAME 区域名称 * @param PARENT_AREA_ID 上一级城市D * * @return 区域数据模型 */ - (AreaModel *)makeAreaModel:(NSNumber *)GRADE areaID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{ AreaModel *model = [[AreaModel alloc] init]; model.GRADE = [NSString stringWithFormat:@"%@",GRADE]; model.ID = [NSString stringWithFormat:@"%@",ID]; model.NAME = NAME; model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID]; return model; } @end