因实验需要,我需要在网络服务器上挂一个数据库,并在通过手机直连数据库,对数据库进行增删改查。经过学习,发现了一个好用的框架------OHMySQL。这里简单介绍一下这个框架的使用
首先新建一个文件,用于存储数据库返回的数据内容,因为我数据库表中有三个属性,分别是location,room,rssi。所以在.h文件中声明三个对应的变量
.h代码如下:
@property(nonatomic,copy)NSString *location;
@property(nonatomic,copy)NSString *room;
@property(nonatomic,copy)NSString *rssi;
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)testWithDict:(NSDictionary *)dict;
.m文件代码如下:
#import "DBdata.h"
@implementation DBdata
-(instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
+(instancetype)testWithDict:(NSDictionary *)dict
{
return [[self alloc]initWithDict:dict];
}
@end
下载OHMySQL框架到项目中
pod 'OHMySQL'
对cocopods不熟悉的读者可以自行百度学习,教程很多,就不赘述了。
新建文件,用来使用OHMySQL。
在.h文件中加入文件头:
#import <OHMySQL.h>
#import "DBdata.h" //DBdata.h是我上文新建的文件名。
增删改查的用法我在代码中详细解释了,.m文件中新建函数用来连接和更新数据:
-(void)connectDB{
OHMySQLUser *usr = [[OHMySQLUser alloc]initWithUserName:@"数据库登录用的用户名" password:@"数据库登录密码" serverName:@"数据库地址" dbName:@"数据库名" port:接口 socket:nil]; //远程连接,这里socket:nil就行了
coordinator = [[OHMySQLStoreCoordinator alloc]initWithUser:usr];
//连接到数据库
[coordinator connect];
// 初始化设备上下文
OHMySQLQueryContext *queryContext = [OHMySQLQueryContext new];
//设置连接器
queryContext.storeCoordinator = coordinator;
NSMutableDictionary *dic=[[NSMutableDictionary alloc]init];
[dic setObject:@"22" forKey:@"location"];
[dic setObject:@"test" forKey:@"room"];
[dic setObject:@"-51,-50,-50,-51" forKey:@"rssi"];
//OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory SELECT:@"表名" condition:nil orderBy:@[@"属性名"] ascending:NO]; //查找
OHMySQLQueryRequest *que=[OHMySQLQueryRequestFactory INSERT:@"表名" set:dic];//插入dic数据
//OHMySQLQueryRequest *que=[OHMySQLQueryRequestFactory UPDATE:@"表名" set:dic condition:@"location='10,10'"]; //修改表中数据
//dic是修改之后要存储的数据,
//condition是用来筛选需要修改的数据,即当表中属性location的数据为10,10时候修改为dicDic
//OHMySQLQueryRequest *que=[OHMySQLQueryRequestFactory DELETE:@"表名" condition:@"location='10,10'"]; //删除满足location=‘10,10’的数据
NSError *error = nil;
//task用于存放数据库返回的数据
NSArray *tasks = [queryContext executeQueryRequestAndFetchResult:que error:&error];
NSMutableArray *arrayModels = [NSMutableArray array];
if (tasks != nil) {
for (NSDictionary *dict in tasks) {
DBdata *model = [DBdata testWithDict:dict]; //前文创建的数据模型
[arrayModels addObject:model];
}
_dbDataArray = arrayModels; //存储数据库返回回来的数据
[coordinator disconnect]; //断开数据库
}
else
NSLog(@"%@",error.description);