FMDB使用事项
1.创建数据库
#import "FMDatabase.h"
引用 FMDB文件,我下载的这个FMDB中所有的引用已经集成在这一个文件中了
NSString * documentPath =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
首先获取document文件夹位置,据说是应为iOS只有这个文件才能放东西,我随便写的绝对路径貌似没有用
NSString * realPath = [documentPath stringByAppendingPathComponent:@"test.sqlite"];
这里设定数据库的名字
FMDatabase * db = [FMDatabase databaseWithPath:realPath];
这个时候,就已经实例化了一个DB,也相当于拿到了数据库的操作对象
这里提醒下各位,记住这个地址,防止后面应为数据库的名称和路径导致操作失败,
2.打开数据库
[db open]
NSString * sqlimage = @"create table Image (ID int primary key AUTO_INCREMENT ,ReadingDetailID varchar(200) null , photo varchar(200) null ) ";
BOOL res = [db executeUpdate:sql];
3.操作数据库
执行创建表单操作,使用 executeUpdate这个函数,这个函数是用来更新数据库的,包括插入和更新,返回BOOL类型,很便于操作
NSString * arrsql =[NSString stringWithFormat: @"select * from MeterRead where ReadingDetailID = %@ ",self.arrDown[i][@"ReadingDetailID"]];
FMResultSet * rs = [db executeQuery:arrsql];
使用executeQuery用来查询,返回的是一个FMResultSet ,
while ([rs next]) {
NSDictionary * meterdic = @{@"ReadingDetailID":[rs stringForColumn:@"ReadingDetailID"],
@"UserWaterMeterCode":[rs stringForColumn:@"UserWaterMeterCode"],
@"UserName":[rs stringForColumn:@"UserName"]};
[self.arrMeterRead addObject:meterdic];
}
大家都看到了把,这个FMResultSet自带的方法中有stringForColumn这种函数来取指定数值,如果我们需要返回的全部数据,这样是很不方便的, resultDictionary他有这种方式,直接转换字典,
//用数组arr保存一条记录转成的字典
[arr addObject:[rsnull resultDictionary]];
* intForColumn:
* longForColumn:
* longLongIntForColumn:
* boolForColumn:
* doubleForColumn:
* stringForColumn:
* dateForColumn:
* dataForColumn:
* dataNoCopyForColumn:
* UTF8StringForColumnIndex:
* objectForColumn:
将单一数据取出的其他方式,很多种数据方式
4.关闭数据库
最后
[db close];
这样所有FMDB创建的都会自动消除了。