FMDB使用教程

本人ios初學(xué)者,為自己學(xué)習(xí)方便,復(fù)制各位大神的學(xué)習(xí)性文章放在自己簡書里,僅作為自己學(xué)習(xí)方便使用,如果作者疑此行為侵權(quán),請隨時(shí)聯(lián)系本人刪除,如有共同學(xué)習(xí)者復(fù)制此文章,請注明原出處

首先下載FMDB的source code,接著在解開的檔案裡,把src資料夾下

除了fmdb.m的檔案加入到自己的iOS專案,最后在專案中加入libsqlite3.dylib這個(gè)函式庫就可以了。啥?有人問為什麼不用加入fmdb.m?簡單講,這個(gè)檔案

是fmdb的使用說明。裡面的註解清楚,范例又簡單,如果有興趣,直接看fmdb.m,

大概就會(huì)用fmdb了。

以下介紹幾個(gè)常用的指令,分享給大家:

-打開/關(guān)閉資料庫

使用資料庫的第一件事,就是建立一個(gè)資料庫。要注意的是,在iOS環(huán)境下,只

有document directory是可以進(jìn)行讀寫的。在寫程式時(shí)用的那個(gè)Resource資料

夾底下的東西都是read-only。因此,建立的資料庫要放在document資料夾下。

方法如下:

NSArray *paths =

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentDirectory = [paths objectAtIndex:0];

NSString *dbPath =

stringByAppendingPathComponent:@"MyDatabase.db"];

[documentDirectory

FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;

if (![db open]) {

NSLog(@“Could not open db.”);

return ;

}

建立table

如果是新建的資料庫檔,一開始是沒有table的。建立table的方式很簡單:1

[db executeUpdate:@"CREATE TABLE PersonList (Name text, Age integer,

Sex integer, Phone text, Address text, Photo blob)"];

這 是FMDB裡 很 常 用 的 指 令 ,[FMDatabase_object executeUpdate:]后 面 用NSString塞入SQLite語法,就解決了。因?yàn)檫@篇主要是在講FMDB,所以SQLite的語法就不多說了,上述程式碼建立了一個(gè)名為PersonList的table,裡面有姓

名、年齡、性別、電話、地址和照片。(嗯....很范例的一個(gè)table)

-插入資料

插入資料跟前面一樣,用executeUpdate后面加語法就可以了。比較不同的是,

因?yàn)椴迦氲馁Y料會(huì)跟Objective-C的變數(shù)有關(guān),所以在string裡使用?號來代表這

些變數(shù)。

[db executeUpdate:@"INSERT INTO PersonList (Name, Age, Sex, Phone,

Address, Photo) VALUES (?,?,?,?,?,?)",

@"Jone", [NSNumber numberWithInt:20], [NSNumber numberWithInt:0],

@“091234567”, @“Taiwan, R.O.C”, [NSData dataWithContentsOfFile: filepath]];


其中,在SQLite中的text對應(yīng)到的是NSString,integer對應(yīng)NSNumber,blob則是NSData。該做的轉(zhuǎn)換FMDB都做好了,只要了解SQLite語法,應(yīng)該沒有什麼問題才是。

-更新資料

太簡單了,不想講,請看范例:

[db executeUpdate:@"UPDATE PersonList SET Age = ? WHERE Name

= ?",[NSNumber numberWithInt:30],@“John”];

-取得資料

取得特定的資料,則需使用FMResultSet物件接收傳回的內(nèi)容:

FMResultSet *rs = [db executeQuery:@"SELECT Name, Age, FROM

PersonList"];

while ([rs next]) {

NSString *name = [rs stringForColumn:@"Name"];

int age = [rs intForColumn:@"Age"];

}

[rs close];

用[rs next]可以輪詢query回來的資料,每一次的next可以得到一個(gè)row裡對

應(yīng)的數(shù)值,并用[rs stringForColumn:]或[rs intForColumn:]等方法把值轉(zhuǎn)成Object-C的型態(tài)。取用完資料后則用[rs close]把結(jié)果關(guān)閉。

-快速取得資料

在有些時(shí)候,只會(huì)query某一個(gè)row裡特定的一個(gè)數(shù)值(比方只是要找John的

年齡),FMDB提供了幾個(gè)比較簡便的方法。這些方法定義在FMDatabaseAdditions.h,如果要使用,記得先import進(jìn)來。

view source

print

//找地址

NSString *address = [db stringForQuery:@"SELECT Address FROM

PersonList WHERE Name = ?",@"John”];

//找年齡

int age = [db intForQuery:@"SELECT Age FROM PersonList WHERE Name

= ?",@"John”];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容