今天小编为大家带来FMDB的使用,其实小编也是小白
FMDB是基于SQLite的一种第三方框架,以面向对象的思想去使用数据库,且可以写SQLite语句。
一、介绍数据库的三大核心类
① FMDatabase:它是一个数据库对象类,每实例一个数据库对象代表着一个数据库
② FMResultSet:它是一个结果集,用来接收DML语句的返回值;
③ FMDatabaseQueue:它是数据库操作的队列(线程)
二、介绍数据库的使用
(1)FMDataBase
直接上代码---->
// 1.获取沙盒Document文件夹路径
NSString *filePath = [[[NSSearchPathForDirectoriesInDomains] NSDocumentDirectory, NSUserDomainMask, Yes] lastObject] stringByAppendingPathComponent];
// 2.创建数据库对象
FMDatabase *db = [FMDatabase dataBaseWithPath: filePath];
if([db open]){
NSLog(@"数据库创建成功");
// 2.1建立表格
Bool result = [db excuteUpDate:@" create table if not exists t_student (id integer primary key autoincrement, name text, age integer;)"];
if(result){
NSLog(@"建表成功");
}else{
NSLog(@"建表失败");
}
}else{
NSLog(@"数据库创建失败");
}
(2) FMResultSet
先来介绍一下FMDB常用的两个API:
① excuteUpDate: 增删改用这个API
eg:[db excuteUpDate:@" insert into t_student (name, age) values (? , ?); ",@20, @"WADE"];
② excuteQuery: 查询操作用这个API
eg:FMResultSet *rst = [db excuteQuery:@" select * from t_student; "];
FMResultSet的结果是一个对象,如果查询具体的字段内容,需要执行下面的操作:
while([ rst.next ]){
NSString *name = [rst stringForColumn:@"name"];
int age = [rst intForColumn:@"age"];
}
(3) FMDatabaseQueue
该类主要负责数据的安全性问题:
前面所写的创建数据库对象只适用于单一操作,如果对数据库对象是多个类共同引用,可能会造成数据库数据混乱。
因此我们在开发中应该使用FMDatabaseQueue对象来实现数据库对象实利的创建。
直接上代码:
// 1.获取沙盒Document文件夹路径
NSString *filePath = [[[NSSearchPathForDirectoriesInDomains] NSDocumentDirectory, NSUserDomainMask, Yes] lastObject] stringByAppendingPathComponent];
// 2.创建队列对象FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath: filePath];
// 3.创建表
queue initDatabase:^(FMDatabase *db){// 改block块内部已经自动打开数据,因此之间常见表格变可
Bool result = [db excuteUpDate:@" create table if not exists t_student (id integer primary key autoincrement, name text, age integer;)"];
if(result){
NSLog(@"建表成功");
}else{
NSLog(@"建表失败");
}
}