iOS數據庫操作之FMDB
SQLite一種輕量級關系數據庫,在嵌入式系統中使用比較廣泛。
在iOS中使用SQLite需要添加庫libsqlite3.0.dylib,并引入頭文件#import <sqlite3.h>
FMDB對sqlit接口進行了高級封裝,使用上更加友好簡潔。
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的單例
//用指定的數據庫名實例化一個數據庫,沒有此文件則創建 FMDatabase *db = [FMDatabase databaseWithPath:filePath]; "" 在臨時目錄創建一個空的數據庫,數據庫關閉后會自動刪除 NULL 在內存中創建一個空的數據庫,數據庫關閉后會自動刪除 //打開數據庫,資源不足或權限不夠會打開失敗 if (![db open]) { NSLog(@"數據庫打開失敗"); } //用完后需要關閉 [db close]; |
數據庫操作:
查詢操作:SELECT,返回FMResultSet,nil表示查詢失敗;
[db executeQuery:sql]; FMResultSet *rs = [db executeQuery:@"SELECT * FROM TableName"]; { while ([rs next]) { //獲取查詢結果,即使結果只有一條 } } |
更新操作:非SELECT操作都是更新操作,返回值類型BOOL,YES:成功,NO:失敗
[db executeUpdate:sql];
數據庫事務:
當需要插入的數據較多時,使用事務操作會比較快。
[db beginTransaction]; //需要執行的操作 [db commit]; FMResultSet *rs; FMResultSet可以不手動關閉,當數據庫關閉時,會跟著關閉。 2.FMDatabaseQueue 線程安全,所有的數據庫操作會在隊列中順序執行 [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) 編輯 收藏 所屬分類: 數據庫