iOS數(shù)據(jù)庫操作之FMDB
SQLite一種輕量級關(guān)系數(shù)據(jù)庫,在嵌入式系統(tǒng)中使用比較廣泛。
在iOS中使用SQLite需要添加庫libsqlite3.0.dylib,并引入頭文件#import <sqlite3.h>
FMDB對sqlit接口進(jìn)行了高級封裝,使用上更加友好簡潔。
https://github.com/ccgus/fmdb
FMDB包含以下文件:
FMDatabase.h FMDatabase.m FMDatabaseAdditions.h FMDatabaseAdditions.m FMDatabasePool.h FMDatabasePool.m FMDatabaseQueue.h FMDatabaseQueue.m FMResultSet.h FMResultSet.m |
FMDB使用:
1.FMDatabase 非線程安全,不要在多線程中使用FMDatabase的單例
//用指定的數(shù)據(jù)庫名實(shí)例化一個(gè)數(shù)據(jù)庫,沒有此文件則創(chuàng)建 FMDatabase *db = [FMDatabase databaseWithPath:filePath]; "" 在臨時(shí)目錄創(chuàng)建一個(gè)空的數(shù)據(jù)庫,數(shù)據(jù)庫關(guān)閉后會自動刪除 NULL 在內(nèi)存中創(chuàng)建一個(gè)空的數(shù)據(jù)庫,數(shù)據(jù)庫關(guān)閉后會自動刪除 //打開數(shù)據(jù)庫,資源不足或權(quán)限不夠會打開失敗 if (![db open]) { NSLog(@"數(shù)據(jù)庫打開失敗"); } //用完后需要關(guān)閉 [db close]; |
數(shù)據(jù)庫操作:
查詢操作:SELECT,返回FMResultSet,nil表示查詢失敗;
[db executeQuery:sql]; FMResultSet *rs = [db executeQuery:@"SELECT * FROM TableName"]; { while ([rs next]) { //獲取查詢結(jié)果,即使結(jié)果只有一條 } } |
更新操作:非SELECT操作都是更新操作,返回值類型BOOL,YES:成功,NO:失敗
[db executeUpdate:sql];
數(shù)據(jù)庫事務(wù):
當(dāng)需要插入的數(shù)據(jù)較多時(shí),使用事務(wù)操作會比較快。
[db beginTransaction]; //需要執(zhí)行的操作 [db commit]; FMResultSet *rs; FMResultSet可以不手動關(guān)閉,當(dāng)數(shù)據(jù)庫關(guān)閉時(shí),會跟著關(guān)閉。 2.FMDatabaseQueue 線程安全,所有的數(shù)據(jù)庫操作會在隊(duì)列中順序執(zhí)行 [FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path]; queue inDatabase:^(FMDatabase *db) { // }]; queue inTransaction:^(FMDatabase *db, BOOL *rollback) { // } |
posted on 2013-11-20 10:45 順其自然EVO 閱讀(431) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫