無標(biāo)題文章

準(zhǔn)備工作

#import"FMDatabase.h"http://數(shù)據(jù)庫的類 相當(dāng)于sqlite3* 句柄(一個FMDatabase對象就代表一個單獨的SQLite數(shù)據(jù)庫涛浙,用來執(zhí)行SQL語句)骚亿。#import"FMResultSet.h"http://伴隨指針碘耳,使用FMDatabase執(zhí)行查詢后的結(jié)果集#import"FMDatabaseAdditions.h"http://FMDatabase類的一個類目,是給FMDatabase的一個擴(kuò)展#import"FMDatabaseQueue.h"http://用與在多線程中執(zhí)行多個查詢或者更新泳炉,它能夠保證線程是安全的笆呆。#import"FMDatabasePool.h"

在桌面新建一個工程相寇,打開終端輸入pod search FMDB声诸,找到我們所需要的第三方類庫pod 'FMDB', '~> 2.6.2'

輸入cd然后空格,再將我們桌面上的工程拖進(jìn)終端里围苫,這是你會看到生成了一個路徑裤园,這就是你這個工程的根目錄,然后回車剂府。

在在終端輸入vim Podfile 然后回車拧揽。

然后你進(jìn)圖了一個Podfile文件,這時候你需要輸入一個i腺占,進(jìn)入編輯狀態(tài)

然后把剛才我們找到的pod 'FMDB', '~> 2.6.2'輸入淤袜。

然后在按下鍵盤左上角的ESC鍵再按“:”退出

然后再在終端中輸入pod instrall,然后等待下載完成衰伯。

執(zhí)行完以上7步铡羡,一個第三方的FMDB就配置好了。

封裝一個FMDBhelp

打開工程意鲸,在工程中新建一個繼承自NSObject的類烦周,在這個類里我們簡單封裝一下一個通用的接口

h文件

首先我們來看.h文件中我們需要開放的方法。

#import@interfaceFMDBhelp:NSObject- (void)createDBWithName:(NSString*)dbName;//無返回結(jié)果集的操作- (BOOL)notResustSetWithSql:(NSString*)sql;//有返回結(jié)果集的操作- (NSArray*)qureyWithSql:(NSString*)sql;//單例+ (FMDBhelp*)sharedFMDBhelp;@end

m文件

新建一個延展临扮,在類目中聲明兩個屬性

@interfaceFMDBhelp()@property(strong, nonatomic)NSString *fileName;//數(shù)據(jù)庫文件的路徑@property(strong, nonatomic)FMDatabase *dataBase;//數(shù)據(jù)庫對象@end

給用戶開放一個自動命名的方法论矾。

-(void)createDBWithName:(NSString*)dbName{if(dbName.length ==0) {/**

*? 是防止用戶直接傳值為nil或者NULL

*/self.fileName =nil; **注意:當(dāng)返回值為nil或者NULL的時候,表示會在臨時目錄下創(chuàng)建一個空的數(shù)據(jù)庫杆勇,當(dāng)FMDatabase連接關(guān)閉的時候贪壳,文件也會被刪除**? }else{/**

*? 判斷用戶是否為數(shù)據(jù)庫文件添加后綴名

*/if([dbName hasSuffix:@".sqlite"]) {self.fileName = dbName;? ? ? }else{self.fileName = [dbName stringByAppendingString:@".sqlite"];? ? ? }? }}

根據(jù)名稱創(chuàng)建沙盒路徑,用來保存數(shù)據(jù)庫文件蚜退。

-(NSString*)DBPath{if(self.fileName) {//說明fileName有值NSString*savePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)? lastObject]stringByAppendingPathComponent:[NSStringstringWithFormat:@"%@",self.fileName]];returnsavePath;? }else{return@"";? }}

利用懶加載的方式創(chuàng)建數(shù)據(jù)庫對象

-(FMDatabase *)dataBase{if(!_dataBase) {_dataBase= [FMDatabase databaseWithPath:[self DBPath]];? }return_dataBase;}

打開或者創(chuàng)建一個數(shù)據(jù)庫

-(BOOL)openOrCreateDB{if([self.dataBase open]) {NSLog(@"數(shù)據(jù)庫打開成功");returnYES;? }else{NSLog(@"打開數(shù)據(jù)庫失敗");returnNO;? }}

關(guān)閉數(shù)據(jù)庫的方法

-(void)closeDB{BOOLisClose = [self.dataBase close];if(isClose) {NSLog(@"關(guān)閉成功");? }else{NSLog(@"關(guān)閉失敗");? }}

無返回結(jié)果集的操作

-(BOOL)notResustSetWithSql:(NSString*)sql{BOOLisOpen = [selfopenOrCreateDB];if(isOpen) {BOOLisUpdate = [self.dataBase executeUpdate:sql];? ? ? [selfcloseDB];//關(guān)閉數(shù)據(jù)庫returnisUpdate;? }else{? ? ? [selfcloseDB];//關(guān)閉數(shù)據(jù)庫returnNO;? }}

有返回結(jié)果集的操作闰靴,查詢方法

-(NSArray*)qureyWithSql:(NSString*)sql{//打開數(shù)據(jù)庫BOOLisOpen = [selfopenOrCreateDB];if(isOpen) {NSLog(@"打開數(shù)據(jù)庫成功");//得到所有記錄的結(jié)果集FMResultSet *resuluSet = [self.dataBase executeQuery:sql];//聲明可變數(shù)組,用來存放所有的記錄NSMutableArray*resultArray = [NSMutableArrayarray];// 遍歷結(jié)果集钻注,取出每一條記錄,并且存儲到可變數(shù)組中while([resuluSet next]) {//直接將一條記錄轉(zhuǎn)換為字典類型NSDictionary*dic =[resuluSet resultDictionary];? ? ? ? ? [resultArray addObject:dic];? ? ? }//釋放結(jié)果集[resuluSet close];//關(guān)閉數(shù)據(jù)庫[selfcloseDB];returnresultArray;? }else{NSLog(@"打開數(shù)據(jù)庫失敗");returnnil;? }}

FMDBhelp的單例

+(FMDBhelp*)sharedFMDBhelp{static FMDBhelp *helper = nil;staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{? ? ? helper = [[FMDBhelp alloc]init];});return helper;}

至此一個基于FMDB的簡單封裝就完成了蚂且。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幅恋,隨后出現(xiàn)的幾起案子杏死,更是在濱河造成了極大的恐慌,老刑警劉巖捆交,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑翼,死亡現(xiàn)場離奇詭異,居然都是意外死亡品追,警方通過查閱死者的電腦和手機(jī)玄括,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肉瓦,“玉大人遭京,你說我怎么就攤上這事胃惜。” “怎么了哪雕?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵船殉,是天一觀的道長。 經(jīng)常有香客問我热监,道長捺弦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任孝扛,我火速辦了婚禮列吼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苦始。我一直安慰自己寞钥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布陌选。 她就那樣靜靜地躺著理郑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咨油。 梳的紋絲不亂的頭發(fā)上您炉,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音役电,去河邊找鬼赚爵。 笑死,一個胖子當(dāng)著我的面吹牛法瑟,可吹牛的內(nèi)容都是我干的冀膝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼霎挟,長吁一口氣:“原來是場噩夢啊……” “哼窝剖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酥夭,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤赐纱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后熬北,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千所,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年蒜埋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最楷。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡整份,死狀恐怖待错,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烈评,我是刑警寧澤火俄,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站讲冠,受9級特大地震影響瓜客,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竿开,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一谱仪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧否彩,春花似錦疯攒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贴浙,卻和暖如春砂吞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崎溃。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工蜻直, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笨奠。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓袭蝗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親般婆。 傳聞我的和親對象是個殘疾皇子到腥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容