FMDB是面向對象的,它以OC的方式封裝了SQLite的C語言API,使用起來更加的方便,不需要過多的關心數據庫操作的知識。但是它本身也存在一些問題,比如跨平臺,因為它是用oc的語言封裝的,所以只能在ios開發的時候使用,如果想實現跨平臺的操作,來降低開發的成本和維護的成本,就需要使用比較原始的SQLite。
FMDB是用于進行數據存儲的第三方的框架,它與SQLite與Core Data相比較,存在很多優勢。
Core Data是ORM的一種體現,使用Core Data需要用到模型數據的轉化,雖然操作簡單,不需要直接操作數據庫,但是性能沒有直接使用SQLite高。但是SQLite使用的時候需要使用c語言中的函數,操作比較麻煩,因此需要對它進行封裝。但是如果只是簡單地封裝,很可能會忽略很多重要的細節,比如如何處理并發以及安全性更問題。
因此,在這里推薦使用第三方框架FMDB,它是對libsqlite3框架的封裝,用起來的步驟與SQLite使用類似,并且它對于多線程的同時操作一個表格時進行了處理,也就意味著它是線程安全的。FMDB是輕量級的框架,使用靈活,它是很多企業開發的首選。
FMDB中重要的類
FMDatabase:一個FMDatabase對象就代表一個單獨的SQLite數據庫,用來執行SQL語句
FMResultSet:使用FMDatabase執行查詢后的結果集
FMDatabaseQueue:用于在多線程中執行多個查詢或更新,它是線程安全的
FMDB使用步驟
1. 下載FMDB文件 fmdb下載地址 ,將FMDB文件夾添加到項目中
2. 導入sqlite框架,導入FMDatabase.h文件
3.與SQLite使用步驟類似,需要獲取數據庫文件路徑,然后獲得數據庫,并打開數據庫,然后數據庫進行操作,最后關閉數據庫。代碼如下所示:
// ViewController.m
// JRFMDB
//
// Created by jerehedu on 15/6/18.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import "ViewController.h"
#import "FMDatabase.h"
@interface ViewController ()
@property (nonatomic, strong) FMDatabase *db;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//導入sqlite框架,導入FMDB文件夾
//1.獲得數據庫文件的路徑
NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *fileName=[doc stringByAppendingPathComponent:@"student.sqlite"];
NSLog(@"fileName = %@",fileName);
//2.獲得數據庫
FMDatabase *db = [FMDatabase databaseWithPath:fileName];
//3.打開數據庫
if ([db open]) {
NSLog(@"ok");
//4.創表
BOOL result=[db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"];
if (result) {
NSLog(@"創表成功");
}else{
NSLog(@"創表失敗");
}
}
self.db=db;
//插入數據
[self insertStu];
[self deleteStu:6];
新聞熱點
疑難解答