iOS学习iOS开发将来跳槽用

FMDB的简述和简单使用

2016-08-18  本文已影响300人  Lessin

一、FMDB的概念

1.什么是FMDB?

(1)FMDB是iOS平台的SQLite数据库框架

(2)FMDB以OC的方式封装了SQLite的C语言API

2.FMDB的优点

(1)使用起来更加面向对象,省去了很多麻烦、冗余C语言代码

(2)对比苹果自带的Core Data框架,更加轻量级和灵活

(3)提供了多线程安全的数据库操作方法,有效地防止数据混乱

二、核心类

FMDB有三个主要的类

(1)FMDatabase
(2)FMResultSet
(3)FMDatabaseQueue

三、打开数据库

1.通过制定SQLite数据库文件路径创建FMDatabase对象

FMDatabase *db = [FMDatabase databaseWithPath:path];
if(![db open]){ NSLog(@"数据库打开失败"); }

2.文件路径有三种情况

1.具体文件路径
2.空字符串
3.nil

四、执行更新

1.在FMDB中,除查询以外的所有操作,都成为“更新”

2.使用executeUpdate:方法执行更新

  • -(BOOL)executeUpdate: (NSString *)sql,...

五、执行查询

1.查询方法

  • -(FMResultSet *)executeQuery: (NSString *)sql,...

2.示例

//查询数据
FMResultSet *rs = [db executeQuery:@"SELECT * FROM t_student"];
//遍历结果集

while([rs next]){ NSString * name = [rs stringForColumn:@"name"]; int age = [rs intForColumn:@"age"]; double score = [rs doubleForColumn:@"score"]; }

六、FMDatabaseQueue

1.FMDatabase这个类是线程不安全的,如果在多个线程中同时使用一个FMDatabase实例,会造成数据混乱等问题
2.为了保证线程安全,FMDB提供方便快捷的FMDatabaseQueue类
3.FMDatabaseQueue的创建
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];
4.简单使用

``[queue inDatabase:^(FMDatabase * db){
[db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Jack"]
[db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Rose"]

[db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Jim"]
FMResultSet *rs = [db executeQuery:@"select * from t_student"];
while([rs next]){
//...

}
}];``

5.使用事务

[queue inTransaction:^(FMDatabase * db, BOOL *rollback){ [db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Jack"] [db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Rose"] [db executeUpdate:@"INSERT INTO t_student(name) VALUES(?)", @"Jim"] FMResultSet *rs = [db executeQuery:@"select * from t_student"]; while([rs next]){ //... } }];

6.回滚
*rollback = YES;

上一篇下一篇

猜你喜欢

热点阅读