FMDB 用法

一 . 使用

在FMDB中三个重要的类

1.FMDatabase: 是一个提供SQLite 数据库的类,用于执行SQL语句

2.FMResultSet: 用在FMDatabase中执行查询的结果的类

3. FMDatabaseQueue :在多线程下查询和更新数据库用到的类

二. 数据库初始化(包括打开数据库和创建表)

FMDB 用法_第1张图片

三. 数据库操作

1.增: 方法: -executeUpdate....

FMDB 用法_第2张图片

2.删 :方法: -executeUpdate....

FMDB 用法_第3张图片

3.改    方法: -executeUpdate....

4 查     方法:  -executeQuery...(相比前三个不同)

执行查询操作后,如果成功后会返回一个 FMResultSet对象,反之会返回nil。然后可以用 while()  循环查看记录,例如:

FMDB 用法_第4张图片

FMResultSet提供了很多方便的方法来查询数据

intForColumn:           longForColumn:                   longLongIntForColumn:     

boolForColumn:         doubleForColumn:              stringForColumn:

dateForColumn:            dataForColumn:               dataNoCopyForColumn:

UTF8StringForColumn:           objectForColumn:


四. 线程安全

在多个线程中同时使用一个FMDatabase实例是不明智的。不要让多个线程分享同一个FMDatabase实例,它无法在多个线程中同时使用。 如果在多个线程中同时使用一个FMDatabase实例,会造成数据混乱等问题。所以,请使用 FMDatabaseQueue,它是线程安全的。以下是使用方法:

1.创建  

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;

NSString *filePath = [path stringByAppendingPathComponent:@"FMDB.db"];

FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];


2.操作数据

[queue inDatabase:^(FMDatabase*db) {

//FMDatabase数据库操作

if (![db open]) {

NSLog(@"打开数据库失败");

return ;

}

//创建表(FMDB中只有update和query操作,除了查询其他都是update操作)}];

[db executeUpdate:@"create table if not exists user(name text,gender text,age integer) "];

//插入数据

BOOL inser = [db executeUpdate:@"insert into user values(?,?,?)",_nameTextField.text,_sexTextField.text,_ageTextField.text];

[db close];

}

4.事物

假如你要对数据库中的Stutent表插入新数据,那么该事务的具体过程是:开始新事物->插入数据->提交事务,那么当我们要往该表内插入500条数据,如果按常规操作处理就要执行500次“开始新事物->插入数据->提交事务”的过程。

,举个例子:假如北京的一家A工厂接了上海一家B公司的500件产品的订单,思考一下:A工厂是生产完一件立即就送到B公司还是将500件产品全部生产完成后再送往B公司?答案肯定是后者,因为前者浪费了大量的时间、人力物力花费在往返于北京和上海之间。同样这个道理也能用在我们的数据库操作上,

SQLite进行事务的SQL语句:

只要在执行SQL语句前加上以下的SQL语句,就可以使用事务功能了:

开启事务的SQL语句,"begin transaction;"

进行提交的SQL语句,"commit transaction;"

进行回滚的SQL语句,"rollback transaction;"

//FMDatabase事务

FMDB 用法_第5张图片


FMDB 用法_第6张图片

//FMDatabaseQueue事务

FMDB 用法_第7张图片
FMDB 用法_第8张图片

原文链接:http://www.jianshu.com/p/71ed016cb1fe

你可能感兴趣的:(FMDB 用法)