一 . 使用
在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