成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS第三方之FMDB

移動開發 iOS
FMDatabase – 表示一個單獨的SQLite數據庫。 用來執行SQLite的命令,FMResultSet – 表示FMDatabase執行查詢后結果集。FMDatabaseQueue – 如果你想在多線程中執行多個查詢或更新,你應該使用該類。這是線程安全的

FMDB有三個主要的類

1.FMDatabase – 表示一個單獨的SQLite數據庫。 用來執行SQLite的命令。

2.FMResultSet – 表示FMDatabase執行查詢后結果集

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

 

數據庫創建

創建FMDatabase對象時參數為SQLite數據庫文件路徑。該路徑可以是以下三種之一:

1..文件路徑。該文件路徑無需真實存,如果不存在會自動創建。

2..空字符串(@”")。表示會在臨時目錄創建一個空的數據庫,當FMDatabase 鏈接關閉時,文件也被刪除。

3.NULL. 將創建一個內在數據庫。同樣的,當FMDatabase連接關閉時,數據會被銷毀。

如需對臨時數據庫或內在數據庫進行一步了解,請繼續閱讀:點擊打開鏈接

 

打開數據庫

在和數據庫交互 之前,數據庫必須是打開的。如果資源或權限不足無法打開或創建數據庫,都會導致打開

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

執行更新

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

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

 

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

舉個例子:插入一個Student數據

  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. *  打印執行SQL語句的狀態 
  12. * 
  13. *  @param judge    SQL語句的執行:成功(YES)/失敗(NO) 
  14. *  @param action   SQL語句的相關操作:創建/插入/查詢/刪除 
  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.     } 

執行查詢

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

 

執行查詢時,如果成功返回FMResultSet對象, 錯誤返回nil. 與執行更新相當,支持使用 NSError**參數。同時,你也可以使用 -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]; 

為了數據查找的通用性,寫了一個通用方法查找Student數據

  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

責任編輯:chenqingxiang 來源: oschina
相關推薦

2015-11-05 16:44:37

第三方登陸android源碼

2021-12-06 09:44:30

鴻蒙HarmonyOS應用

2011-08-15 17:20:25

iPhone應用Sqlite3FMDB

2013-08-14 09:50:32

iOS類庫

2019-07-30 11:35:54

AndroidRetrofit

2018-09-30 15:18:29

2012-03-01 20:42:12

iPhone

2011-08-05 16:50:00

iPhone 數據 Sqlite

2013-01-15 13:50:22

iOS開發開源庫

2019-09-03 18:31:19

第三方支付電商支付行業

2016-10-21 14:09:10

2009-12-31 14:38:34

Silverlight

2017-12-11 15:53:56

2015-07-13 13:34:13

ios第三方庫xcode插件

2012-05-24 21:59:55

iOS

2022-12-15 16:49:12

2012-08-22 13:50:13

iOS發展史

2015-07-13 09:48:21

iOS

2017-03-14 13:03:18

Android架構第三方庫

2022-01-14 09:57:14

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美多人在线 | 99精品免费久久久久久久久日本 | 中文字幕亚洲视频 | 日韩精品一区二区三区中文在线 | 羞羞视频在线观看 | 美女黄视频网站 | 国产精品久久久久无码av | 亚洲www| 精品综合久久久 | 激情视频中文字幕 | 免费观看黄色片视频 | 欧美日本韩国一区二区 | 伊人二区 | 午夜免费观看网站 | 午夜视频免费 | 久久久久久免费精品一区二区三区 | 操人网| 久久美女视频 | 精品乱码一区二区 | 国产偷自视频区视频 | 久久精品国产久精国产 | 性做久久久久久免费观看欧美 | 国产精品自产拍 | 成人一区二区三区视频 | 99热精品在线 | 免费国产黄| 日韩不卡在线观看 | 天天干夜夜操 | 在线成人免费观看 | 日日日日操 | 色接久久 | 国产无套一区二区三区久久 | 精品久久久久久 | 一区二区三区国产 | 国产97在线看 | 欧美精品一区三区 | 中国大陆高清aⅴ毛片 | 日日操夜夜操天天操 | 日日操操 | 日韩精品四区 | 91成人午夜性a一级毛片 |