iOS 之FMDB使用小结

什么是FMDB

很简单,一个iOS中SQLite API的封装库。对于多线程的并发操作进行了处理,是线程安全的。

FMDB重要类

FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句用的。

FMResultSet:使用FMDatabase执行查询后的结果。

FMDatabaseQueue:用于在多线程中执行多个查询或更新。

FMDB的使用步骤详解

项目中导入FMDB      附上github地址: https://github.com/ccgus/fmdb  按照要求添加相应的类库

我用的是Cocoapods导入的,然后在.pch类中引入FMDatabase.h这个类,然后新建一个继承自NSObject的对象。

1、创建path路径:

FMDatabase*_db;NSString*_docPath;int mark_student;

.获取数据库文件的路径

_docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];NSLog(@"%@",_docPath);

2、设置数据库名称

NSString*fileName = [_docPath stringByAppendingPathComponent:@"student.sqlite"];

mark_student = 1;

//2.获取数据库_db = [FMDatabase databaseWithPath:fileName];

if([_db open]) {NSLog(@"打开数据库成功");}else{NSLog(@"打开数据库失败");}

3、创建表

BOOLresult = [_db executeUpdate:@"CREATE

TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT,

name text NOT NULL, age integer NOT NULL, sex text NOT NULL);"];

if(result) {NSLog(@"创建表成功");}else{NSLog(@"创建表失败");}

4、插入数据

NSString*name = [NSStringstringWithFormat:@"家旺%@",@(mark_student)];

int age = mark_student;NSString*sex =@"男";mark_student ++;

BOOL result = [_db executeUpdate:@"INSERT INTO t_student (name, age, sex) VALUES (?,?,?)",name,@(age),sex];

if(result) {NSLog(@"插入成功");}else{NSLog(@"插入失败");}

5、删除数据

int idNum =10;

BOO Lresult = [_db executeUpdate:@"delete from t_student where id = ?",@(idNum)];

if(result) {NSLog(@"删除成功");}else{NSLog(@"删除失败");}

6、修改数据

//修改学生的名字

NSString*newName =@"家旺1";

NSString*oldName =@"家旺";

BOOLresult = [_db executeUpdate:@"update t_student set name = ? where name = ?",newName,oldName];

if(result) {NSLog(@"修改成功");}else{NSLog(@"修改失败");}

7、查询数据

//查询整个表FMResultSet * resultSet = [_db executeQuery:@"select * from t_student"];

遍历结果集合while([resultSet next]) {int idNum = [resultSet intForColumn:@"id"];

NSString*name = [resultSet objectForColumnName:@"name"];

int age = [resultSet intForColumn:@"age"];

NSString*sex = [resultSet objectForColumnName:@"sex"];

NSLog(@"学号:%@ 姓名:%@ 年龄:%@ 性别:%@",@(idNum),name,@(age),sex);}

8、表的删除

//如果表格存在 则销毁BOOL result = [_db executeUpdate:@"drop table if exists t_student"];

if(result) {NSLog(@"删除表成功");}else{NSLog(@"删除表失败");}

你可能感兴趣的:(iOS 之FMDB使用小结)