FMDB 數據庫的使用

FMDB 數據庫 和 SQLite3 很是類似  但要比 SQLite3 省好多代碼  沒有了各類綁定 直接引用 FMDB 的方法就能夠簡單解決
首先 FMDB 他仍是一個單例類  由於要被其餘類 使用
FMDB 仍是由 打開數據庫  建立數據名   添加數據   更新數據   刪除數據  查詢數據 幾部份內容
在這裏 model 的屬性除了 image 外都是 NSString 類型  image 是 NSData 類型 因此在下面的查詢處會有一個轉換方式
打開數據庫: 先 獲取路徑  在調用  databaseWithPath 這個方法 代碼以下:
NSString *str = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:sqliteName];
db = [FMDatabase databaseWithPath:str];
 
建立字段: 先打開數據庫 再添加全部要添加的數據字段 而後調用  executeUpdate:方法
NSString *str = [NSString stringWithFormat:@"create table if not exists %@ (ID integer primary key autoincrement, name text, gender text, age text, image blob, myID text)", tableName];
BOOL flag = [db executeUpdate:str];
 
插入數據:  先打開數據庫 再插入所要添加的數據(必定要注意他們的前後順序) 而後調用  executeUpdate:方法
NSString *str = [NSString stringWithFormat:@"insert into %@ (name, gender, age, image, myID) values (?, ?, ?, ?, ?)", tableName];
BOOL flag = [db executeUpdate:str, name, gender, age, image, myID];
 
更新數據: 先打開數據庫 再添加須要更新的全部字段 而後調用 executeUpdate:方法
NSString *str = [NSString stringWithFormat:@"update %@ set name = ?, gender = ?, age = ?, image = ?, myID = ? where myID = ?", tableName];
BOOL flag = [db executeUpdate:str,name, gender, age, image, myID, forMyID];
 
刪除數據: 先打開數據庫 再刪除數據要根據字段中惟一的一個字段值進行刪除 而後調用  executeUpdate方法
NSString *str = [NSString stringWithFormat:@"delete from %@ where myID = ?", tableName];
BOOL flag = [db executeUpdate:str,myID];
 
查詢全部數據: 先打開數據庫 根據代表進行查詢數據 而後調用  executeQuery:方法
NSString *str = [NSString stringWithFormat:@"select * from %@", tableName];
Model *model = [[Model alloc] init];
FMResultSet *result = [db executeQuery:str];
NSMutableArray *array = [NSMutableArray array];
while ([result next]) {
     model.name = [result stringForColumn:@"name"];
     model.gender = [result stringForColumn:@"gender"];
     model.age = [result stringForColumn:@"age"];
     // 將 NSString 轉換成 NSData 類型
     model.image = [[result stringForColumn:@"image"] dataUsingEncoding:NSUTF8StringEncoding];
     model.myID = [result stringForColumn:@"myID"];
     [array addObject:model];
}
最後 在須要的地方調用
 
小結:
建立 插入 跟新  刪除 基本上類似 sql語句方法中有幾個參數就有幾個字段 那就添加幾個 執行語句基本上是同樣的
查詢全部的結果是一個個的 model 因此用數組裝起來 返回數組 執行語句和上面的不一樣 executeQuery:
如果查詢一個 返回的是一個model
相關文章
相關標籤/搜索