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創建的都會自動消除了。