知乎日报第三次小结
本周主要是完成知乎日报的收藏功能。
首先在完成收藏前先学习了一下数据库FMDB的用法:
首先什么是FMDB
-
FMDB是iOS平台的SQLite数据库框架
-
FMDB以OC的方式封装了SQLite的C语言API
FMDB的优点
- 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码
2.对比苹果自带的Core Data框架,更加轻量级和灵活
3.提供了多线程安全的数据库操作方法,有效地防止数据混乱
FMDB的核心类
首先FMDB有三个主要的类:
- FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库用来执行SQL语句
- FMResultSet:使用FMDatabase执行查询后的结果集
- FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
FMDB一些简单的用法
首先由于FMDB是第三方库,所以我们必须先将第三库添加到我们的项目下,然后:
- 首先获得数据库文件的路径:
NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *fileName=[doc stringByAppendingPathComponent:@"collect.sqlite"];
collect.sqlite:相当于给数据库起的名字
- 获得数据库:
FMDatabase *db=[FMDatabase databaseWithPath:fileName];
- 打开数据库之后,先创建一个表:
BOOL executeUpdate = [dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS t_collect (id text NOT NULL);"];
if (executeUpdate) {
NSLog(@"创建表成功");
} else {
NSLog(@"创建表失败");
}
- 插入数据:
BOOL result = [fmdb executeUpdate:@"INSERT INTO t_content (Content,ImageView) VALUES (?,?)",[self.IDArray[_index] title],[self.IDArray[_index] images]];
- 查找数据:
- (void)traverseData {
FMDatabase *dataBase = [FMDatabase databaseWithPath:self.path];
if ([dataBase open]) {
FMResultSet *resultSet = [dataBase executeQuery:@"SELECT * FROM t_collect"];
self.TestID = [[NSMutableArray alloc]init];
while ([resultSet next]) {
NSString *bankStr = [resultSet stringForColumn:@"id"];
[self.TestID addObject:bankStr];
}
[dataBase close];
} else {
NSLog(@"打开数据库失败");
}
}
- 删除数据:
FMDatabase *dataBase = [FMDatabase databaseWithPath:self.path];
if ([dataBase open]) {
BOOL result = [dataBase executeUpdate:@"delete from t_collect where id = ?",self->_TestID[indexPath.row]];
if (result) {
} else {
NSLog(@"删除失败");
}
[dataBase close];
}
[self traverseData];
self->_n = 0;
while (self->_TestID.count != self->_n) {
[self test:self->_TestID[self->_n++]];
}
[self.tableView reloadData];
completionHandler (YES);
}];
- 修改数据:
- (void)updateUser:(User *)user {
if (![self.database open]) {
NSLog(@"database does not open.");
return;
}
NSString *execSql = [NSString stringWithFormat:@"UPDATE %@ SET username = '%@', age = %d, isMan = %d WHERE userId = '%@'", tableName, user.username, user.age, user.isMan ? 1 : 0, user.userId];
BOOL result = [self.database executeUpdate:execSql];
if (result) {
NSLog(@"update user success");
}
[self.database close];
}
目前了解到的就是FMDB的简单使用方法,欢迎大神指教!
Original: https://blog.csdn.net/weixin_51638861/article/details/121322572
Author: Yeppppppppp
Title: 知乎日报第三次小结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816209/
转载文章受原作者版权保护。转载请注明原作者出处!