自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS第三方之FMDB

移動開發(fā) iOS
FMDatabase – 表示一個單獨(dú)的SQLite數(shù)據(jù)庫。 用來執(zhí)行SQLite的命令,F(xiàn)MResultSet – 表示FMDatabase執(zhí)行查詢后結(jié)果集。FMDatabaseQueue – 如果你想在多線程中執(zhí)行多個查詢或更新,你應(yīng)該使用該類。這是線程安全的

FMDB有三個主要的類

1.FMDatabase – 表示一個單獨(dú)的SQLite數(shù)據(jù)庫。 用來執(zhí)行SQLite的命令。

2.FMResultSet – 表示FMDatabase執(zhí)行查詢后結(jié)果集

3.FMDatabaseQueue – 如果你想在多線程中執(zhí)行多個查詢或更新,你應(yīng)該使用該類。這是線程安全的。

 

數(shù)據(jù)庫創(chuàng)建

創(chuàng)建FMDatabase對象時(shí)參數(shù)為SQLite數(shù)據(jù)庫文件路徑。該路徑可以是以下三種之一:

1..文件路徑。該文件路徑無需真實(shí)存,如果不存在會自動創(chuàng)建。

2..空字符串(@”")。表示會在臨時(shí)目錄創(chuàng)建一個空的數(shù)據(jù)庫,當(dāng)FMDatabase 鏈接關(guān)閉時(shí),文件也被刪除。

3.NULL. 將創(chuàng)建一個內(nèi)在數(shù)據(jù)庫。同樣的,當(dāng)FMDatabase連接關(guān)閉時(shí),數(shù)據(jù)會被銷毀。

如需對臨時(shí)數(shù)據(jù)庫或內(nèi)在數(shù)據(jù)庫進(jìn)行一步了解,請繼續(xù)閱讀:點(diǎn)擊打開鏈接

 

打開數(shù)據(jù)庫

在和數(shù)據(jù)庫交互 之前,數(shù)據(jù)庫必須是打開的。如果資源或權(quán)限不足無法打開或創(chuàng)建數(shù)據(jù)庫,都會導(dǎo)致打開

  1. <pre name="code" class="objc">    if (![_db open]) { 
  2.         NSLog(@"數(shù)據(jù)庫打開失敗"); 
  3.         return NO; 
  4.     } 

執(zhí)行更新

一切不是SELECT命令的命令都視為更新。這包括  CREATE, UPDATE, INSERT,ALTER,COMMIT, BEGIN, DETACH, DELETE, DROP, END, EXPLAIN, VACUUM, and REPLACE  (等)。

簡單來說,只要不是以SELECT開頭的命令都是UPDATE命令。

 

執(zhí)行更新返回一個BOOL值。YES表示執(zhí)行成功,否則表示有那些錯誤 。你可以調(diào)用 -lastErrorMessage 和 -lastErrorCode方法來得到更多信息。

舉個例子:插入一個Student數(shù)據(jù)

  1. // 兩種寫sql語句方式 
  2.  
  3. NSString *sqlStr = [NSString stringWithFormat:@"insert into student values ('%@', '%@', '%@')", student.number, student.name, student.age]; 
  4.     NSLog(@"%@", sqlStr); 
  5.     BOOL result = [_db executeUpdate:sqlStr];<pre name="code" class="objc" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 25px;">//    BOOL result = [_db executeUpdate:@"insert into student (number, name, age) values (?,?,?)", student.number, student.name, student.age]; 
  6.  
  7. [self judgeDBError:result action:DATABASE_INSERT]; return result; 
  8.  
  9.  
  10. /** 
  11. *  打印執(zhí)行SQL語句的狀態(tài) 
  12. * 
  13. *  @param judge    SQL語句的執(zhí)行:成功(YES)/失敗(NO) 
  14. *  @param action   SQL語句的相關(guān)操作:創(chuàng)建/插入/查詢/刪除 
  15. */ 
  16. -(void)judgeDBError:(BOOL)judge action:(NSString *)action 
  17.     if (!judge && [self.db hadError]) { 
  18.         //如果有錯誤,打印錯誤信息 
  19.         NSLog(@"%@失敗:%@",action,[self.db lastError]); 
  20.     } 
  21.     else 
  22.     { 
  23.         NSLog(@"%@成功",action); 
  24.     } 

執(zhí)行查詢

SELECT命令就是查詢,執(zhí)行查詢的方法是以 -excuteQuery開頭的。

 

執(zhí)行查詢時(shí),如果成功返回FMResultSet對象, 錯誤返回nil. 與執(zhí)行更新相當(dāng),支持使用 NSError**參數(shù)。同時(shí),你也可以使用 -lastErrorCode和-lastErrorMessage獲知錯誤信息。

  1. FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"];    
  2. while ([s next]) {    
  3.     //retrieve values for each record    

舉個例子:

  1. -(NSMutableArray *)selectAllStudents 
  2.     FMResultSet *set = [_db executeQuery:@"select * from student"]; 
  3.     return [self selectAllStudentsHelper:set]; 

為了數(shù)據(jù)查找的通用性,寫了一個通用方法查找Student數(shù)據(jù)

  1. (NSMutableArray *)selectAllStudentsHelper:(FMResultSet *)FMSet; 
  2.  
  3. -(NSMutableArray *)selectAllStudentsHelper:(FMResultSet *)FMSet 
  4.     NSMutableArray * selectResult = [NSMutableArray array]; 
  5.     while ([FMSet next]) { 
  6.         Student * stu = [[Student alloc] init]; 
  7.          
  8.         stu.number = [FMSet stringForColumn:@"number"]; 
  9.         stu.name = [FMSet stringForColumn:@"name"]; 
  10.         stu.age = [FMSet stringForColumn:@"age"]; 
  11.         /** 
  12.          *  各種不同類型的值有不同的取法. 
  13.          *        int a = [FMSet intForColumn:@"a"], 
  14.          * NSString * b = [FMSet stringForColumn:@"b"], 
  15.          *   NSData * c = [FMSet dateForColumn:@"c"], 
  16.          *      float d = [FMSet doubleForColumn:@"d"], 
  17.          */ 
  18.         [selectResult addObject:stu]; 
  19.     } 
  20.     return selectResult; 

FMResultSet  提供了很多方法來獲得所需的格式的值:

    intForColumn:

    longForColumn:

    longLongIntForColumn:

    boolForColumn:

    doubleForColumn:

    stringForColumn:

    dataForColumn:

    dataNoCopyForColumn:

    UTF8StringForColumnIndex:

    objectForColumn:

本文鏈接:http://my.oschina.net/CgShare/blog/293635

責(zé)任編輯:chenqingxiang 來源: oschina
相關(guān)推薦

2015-11-05 16:44:37

第三方登陸android源碼

2021-12-06 09:44:30

鴻蒙HarmonyOS應(yīng)用

2011-08-15 17:20:25

iPhone應(yīng)用Sqlite3FMDB

2013-08-14 09:50:32

iOS類庫

2019-07-30 11:35:54

AndroidRetrofit

2012-03-01 20:42:12

iPhone

2018-09-30 15:18:29

2013-01-15 13:50:22

iOS開發(fā)開源庫

2011-08-05 16:50:00

iPhone 數(shù)據(jù) Sqlite

2019-09-03 18:31:19

第三方支付電商支付行業(yè)

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

2017-12-11 15:53:56

2022-12-15 16:49:12

2015-07-13 09:48:21

iOS

2012-08-22 13:50:13

iOS發(fā)展史

2015-07-13 13:34:13

ios第三方庫xcode插件

2012-05-24 21:59:55

iOS

2017-03-14 13:03:18

Android架構(gòu)第三方庫

2022-01-14 09:57:14

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號