成人免费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

2019-09-03 18:31:19

第三方支付電商支付行業

2013-01-15 13:50:22

iOS開發開源庫

2011-08-05 16:50:00

iPhone 數據 Sqlite

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

2009-01-14 12:45:05

MSNIM蘋果

2014-07-22 10:56:45

Android Stu第三方類庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人艹人人| 精品欧美一区二区三区久久久小说 | 免费看国产一级特黄aaaa大片 | 久久久国产一区二区三区 | 在线日韩中文字幕 | 在线欧美a | 国产97在线 | 日韩 | 91资源在线 | 亚洲一区成人 | 在线看av的网址 | 男人的天堂在线视频 | 最新av中文字幕 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 久久大陆 | 久久99精品久久久 | 久久久精品 | 香蕉视频久久久 | 亚洲精品一区二区三区中文字幕 | 午夜99| 日韩午夜网站 | 午夜av电影 | 在线观看黄色大片 | 97av在线 | 免费视频久久久久 | 国产一区二区精品在线观看 | 天天操天天插 | 日本黄色大片免费 | 国产婷婷在线视频 | 在线成人 | 亚洲国产成人精品久久久国产成人一区 | 免费xxxx大片国产在线 | 成人在线播放网址 | 日韩欧美精品在线播放 | 观看av| 亚洲一区视频在线 | www..99re| 伊人电影院av | 欧美日韩国产在线观看 | 91pron在线| 午夜影院在线免费观看视频 | 亚洲欧美综合精品另类天天更新 |