数据持久化(三)使用第三方类库FMDB

2017-06-19  本文已影响32人  UILabelkell

@SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3。在IOS中使用SQLite如果使用SDK提供的方法,特别麻烦也不利于理解和使用,感觉使用很不方便,今天就讲讲一个针对IOS的SQlite API封装的第三方库FMDB,FMDB对SDK中的API做了一层封装,使之使用OC来访问,使用方便而且更熟悉。FMDB的下载地址https://github.com/ccgus/fmdb
@FMDB主要涉及两个类,FMDatabase和FMResultSet 下载完FMDB源码后把文件拖到工程中,并导入SQLite支持 库,libsqlite3.0.dylib
<pre>#import "HMTDataBaseHandle.h"

import "FMDB.h"

import "HMTPerson.h"

@implementation HMTDataBaseHandle

static HMTDataBaseHandle * _dbHandle = nil;

pragma mark - 定义一个 FMDatabase 对象

static FMDatabase * database = nil;

pragma mark - 获得沙盒文件下Documents路径

pragma mark - 打开数据库操作------ databaseWithPath open

pragma mark - 关闭数据库操作

}

pragma mark - 管理创建表的操作

pragma mark - 增加数据操作----- executeUpdate

pragma mark - 删除数据操作----- executeUpdate

pragma mark - 更新数据操作----- executeUpdate

pragma mark - 查询数据操作(与其他的都不一样,查询是调用executeQuery,切记切记!!!!!!)

@end

@FMDB提供如下多个方法来获取不同类型的数据:

1.intForColumn:
2.longForColumn:
3.longLongIntForColumn:
4.boolForColumn:
5.doubleForColumn:
6.stringForColumn:
7.dateForColumn:
8.dataForColumn:
9.dataNoCopyForColumn:
10.UTF8StringForColumnIndex:
11.objectForColumn:
@如果我们的app需要多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安全了。切记不能在多个线程中共同一个FMDatabase对象并且在多个线程中同时使用,这个类本身不是线程安全的,这样使用会造成数据混乱等问题。

使用FMDatabaseQueue很简单,首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inDatabase方法中。在闭包中操作数据库,而不直接参与FMDatabase的管理。

-(void)executeDBOperation
{
//获取Document文件夹下的数据库文件,没有则创建
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dbPath = [docPath stringByAppendingPathComponent:@"user.db"];

FMDatabaseQueue *databaseQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath];  
[databaseQueue inDatabase:^(FMDatabase *db){  
[db executeUpdate:@"insert into user values (?,?,?)",@"Ren",@"Male",[NSNumber numberWithInt:20]];  
}];  
[databaseQueue close];  

} </pre>

上一篇 下一篇

猜你喜欢

热点阅读