FMDB数据库总结
来源:互联网 发布:短网址源码 编辑:程序博客网 时间:2024/05/31 18:50
这是本人自己整理的FMDB,如有问题请见谅并指出,谢谢!。
要用fmdb缓存,首先要熟练使用SQLite指令,可以参考我的博客文@http://blog.csdn.net/icandyss/article/details/50670078
下面是我写的一个小Demo:
FMDB数据库最常用的就是增删改查,下面的demo主要是缓存了从网上请求下来的一些图片和其对应的标题。可以满足在断网或再次运行应用的情况下界面有数据。
- (void)viewDidLoad { //应用刚运行的时候,首先要判断是否有已经有缓存了,如果有就用缓存里的数据,没有的话再重新请求。 //先获取保存的文件的位置 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *fileName = [doc stringByAppendingPathComponent:@"fmdb.sqlite"]; //判断是否存在这个文件 BOOL isExit = [[NSFileManager defaultManager]fileExistsAtPath:fileName]; if (!isExit) { //不存在的话,重新从网上请求数据 [self requestDatas]; }else { //存在的话,先创建数据库 [self creatFmdb]; //获取数据库里的信息 [self readDataFromFmdb]; } }//网络请求- (void)requestDatas{ NSString *url = @"****************************************************"; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager GET:url parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { //NSLog(@"%@",responseObject); NSArray *infoArr = responseObject[@"data"]; for (NSDictionary *dict in infoArr) { //取出请求下来的数据保存到可变数组_datas里 [_datas addObject:dict]; } //创建数据库 [self creatFmdb]; //插入数据 [self insertDataToFmdb:_datas]; //刷新UI界面 [_tableview reloadData]; } failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) { NSLog(@"%@",error); }];}//创建数据库缓存- (void)creatFmdb{ //获取数据库文件的路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString * fileName = [doc stringByAppendingPathComponent:@"fmdb.sqlite"]; //创建数据库 FMDatabase *db = [FMDatabase databaseWithPath:fileName]; //打开数据库 [db open]; if ([db open]) { //创表 BOOL table = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS sstable (id integer PRIMARY KEY ,image text NOT NULL,name text NOT NULL ) ;"]; if (table) { NSLog(@"创表成功"); }else { NSLog(@"创表失败"); } } _db = db; //_db为创建的FMDatabase类型的全局变量。}//插入数据- (void)insertDataToFmdb:(NSArray *)datas{ //首先打开数据库 [self.db open]; //插入数据 if ([self.db open]) { for (int i = 0; i < datas.count; i++) { [self.db executeUpdate:@"INSERT INTO sstable (image,name) VALUES (?, ?);",datas[i][@"logo"],datas[i][@"name"]]; } } [self.db close];}//读取数据- (void)readDataFromFmdb{ //获取数据库文件的路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"doc:----%@",doc); _fileName = [doc stringByAppendingPathComponent:@"fmdb.sqlite"]; //获取数据库 FMDatabase *db = [FMDatabase databaseWithPath:_fileName]; //首先打开数据库 [db open]; if ([db open]) { //读取数据 FMResultSet *result = [self.db executeQuery:@"SELECT * FROM sstable"]; while ([result next]) { NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:[result stringForColumn:@"image"],@"logo",[result stringForColumn:@"name"],@"name",nil]; [_datas addObject:dict]; } } [db close];}
到此已经可以完成数据缓存了,除了上述把数据库、网络请求和界面搭建写在一个控制器里的方法,还可以把数据库操作单独拿出来写一个单例,这样子使用起来会更简单方便一些!
0 0
- fmdb(FMDatabase) 数据库总结
- FMDB数据库总结
- fmdb数据库
- FMDB数据库
- FMDB数据库
- 数据库fmdb
- FMDB数据库
- FMDB iphone数据库
- FMDB iphone 数据库
- 数据库框架:FMDB
- iphone FMDB数据库
- 数据库操作(使用FMDB)
- FMDB数据库使用
- 数据库操作(使用FMDB)
- 数据库操作(使用FMDB)
- FMDB 数据库简单操作
- 数据库操作(使用FMDB)
- FMDB 数据库加密
- iOS开发证书变成“此证书的签发者无效”解决方法
- BZOJ_P4128 Matrix(矩阵乘法+快速幂+BSGS)
- 梆梆SDKs详细分析-防界面劫持SDK
- MySQL 存储引擎
- c 文本文件拷贝
- FMDB数据库总结
- 关于sizeof(str)的问题
- asp.net利用Ajax和Jquery在前台向后台传参数并返回值,通过aspx.cs中的静态方法+WebMethod进行处理
- MTU 巨帧 TCP/UDP与分片
- 【Unity插件】NGUI核心组件之UIAnchor
- ubuntu下samba 安装与配置
- Python - 批量更改文件名
- 关于移动购物应用中的购物车效果的实现
- iOS,Android网络抓包教程之tcpdump