FMDB 用法

一 . 使用

在FMDB中三個重要的類

1.FMDatabase: 是一個提供SQLite 數(shù)據(jù)庫的類,用于執(zhí)行SQL語句

2.FMResultSet: 用在FMDatabase中執(zhí)行查詢的結果的類

3. FMDatabaseQueue :在多線程下查詢和更新數(shù)據(jù)庫用到的類

二. 數(shù)據(jù)庫初始化(包括打開數(shù)據(jù)庫和創(chuàng)建表)

三. 數(shù)據(jù)庫操作

1.增: 方法: -executeUpdate....

2.刪 :方法: -executeUpdate....

3.改? ? 方法: -executeUpdate....

4 查 ? ? 方法: ?-executeQuery...(相比前三個不同)

執(zhí)行查詢操作后,如果成功后會返回一個 FMResultSet對象,反之會返回nil。然后可以用 while() ?循環(huán)查看記錄,例如:

FMResultSet提供了很多方便的方法來查詢數(shù)據(jù)

intForColumn: ? ? ? ? ? longForColumn: ? ? ? ? ? ? ? ? ? longLongIntForColumn: ? ??

boolForColumn: ? ? ? ? doubleForColumn: ? ? ? ? ? ? ?stringForColumn:

dateForColumn: ? ? ? ? ? ?dataForColumn: ? ? ? ? ? ? ? dataNoCopyForColumn:

UTF8StringForColumn: ? ? ? ? ? objectForColumn:


四. 線程安全

在多個線程中同時使用一個FMDatabase實例是不明智的。不要讓多個線程分享同一個FMDatabase實例,它無法在多個線程中同時使用。 如果在多個線程中同時使用一個FMDatabase實例,會造成數(shù)據(jù)混亂等問題。所以,請使用 FMDatabaseQueue,它是線程安全的。以下是使用方法:

1.創(chuàng)建 ?

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *filePath = [path stringByAppendingPathComponent:@"FMDB.db"];

FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];


2.操作數(shù)據(jù)

[queue inDatabase:^(FMDatabase*db) {

//FMDatabase數(shù)據(jù)庫操作

if (![db open]) {

NSLog(@"打開數(shù)據(jù)庫失敗");

return ;

}

//創(chuàng)建表(FMDB中只有update和query操作,除了查詢其他都是update操作)}];

[db executeUpdate:@"create table if not exists user(name text,gender text,age integer) "];

//插入數(shù)據(jù)

BOOL inser = [db executeUpdate:@"insert into user values(?,?,?)",_nameTextField.text,_sexTextField.text,_ageTextField.text];

[db close];

}

4.事物

假如你要對數(shù)據(jù)庫中的Stutent表插入新數(shù)據(jù),那么該事務的具體過程是:開始新事物->插入數(shù)據(jù)->提交事務,那么當我們要往該表內(nèi)插入500條數(shù)據(jù),如果按常規(guī)操作處理就要執(zhí)行500次“開始新事物->插入數(shù)據(jù)->提交事務”的過程。

,舉個例子:假如北京的一家A工廠接了上海一家B公司的500件產(chǎn)品的訂單,思考一下:A工廠是生產(chǎn)完一件立即就送到B公司還是將500件產(chǎn)品全部生產(chǎn)完成后再送往B公司?答案肯定是后者,因為前者浪費了大量的時間、人力物力花費在往返于北京和上海之間。同樣這個道理也能用在我們的數(shù)據(jù)庫操作上,

SQLite進行事務的SQL語句:

只要在執(zhí)行SQL語句前加上以下的SQL語句,就可以使用事務功能了:

開啟事務的SQL語句,"begin transaction;"

進行提交的SQL語句,"commit transaction;"

進行回滾的SQL語句,"rollback transaction;"

//FMDatabase事務


//FMDatabaseQueue事務

原文鏈接:http://www.itdecent.cn/p/71ed016cb1fe

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

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

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