数据持久化之FMDB--基本使用
来源:互联网 发布:淘宝零点秒杀在哪 编辑:程序博客网 时间:2024/06/05 02:11
在iOS开发中数据存储较多数据首先想到的要算数据库。sqlite是一个轻量级、跨平台的小型数据库,其拥有可移植性高、有着和MySql几乎相同的数据库语句以及无需服务器即可使用的优点:
一、可以存储大量的数据,存储和检索的速度非常快;
二、能对数据进行大量的聚合,这样比起使用对象来进行这些操作要快。
当然,它也具有明显的缺点:
一、它没有提供数据库的创建方式;
二、它基于C语言框架设计,没有面向对象的API,所以使用起来比较麻烦;
三、复杂的数据模型的数据建表相对而言比较麻烦。
通常,我们都是使用基于sqlite封装的开源数据库FMDB来减少使用sqlite的工作量,无论ARC和MRC都能应付自如,FMDB会在编译时自动匹配。
简单介绍一下FMDB的使用
1.首先指定数据存储路径,通常在Document目录下边;
//数据库文件存储路径
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"Data.db"];
//创建数据库实例
db = [[FMDatabase alloc] initWithPath:dbPath];
2.创建表//创建表
- (void)creatTable{
//打开数据库
if ([db open]) {
//开启事务
[db beginTransaction];
//简单创建表语句
NSString *sql = @"create table if not exists person (id integer primary key autoincrement, name text, age integer, address text)";
BOOL rec = [db executeUpdate:sql];
if (rec) {
NSLog(@"创建表成功");
}
//提交结束事务,不可缺少。不然会生成数据库临时文件。
[db commit];
}
}
3.插入一条数据:- (void)insertTable{
if ([db open]) {
NSString *sql = @"insert into person (name, age, address) values (\"张三\",25,\"上海市\")";
BOOL rec = [db executeUpdate:sql];
if (rec) {
NSLog(@"插入数据成功");
} else {
NSLog(@"插入数据失败");
}
}
}
4.查询表数据,例如查询id>3的全部数据:- (NSMutableArray *)selectdata{
if ([db open]) {
NSString *sql = @"select * from person where id > 3";
FMResultSet *rs = [db executeQuery:sql];
if (rs) {
NSMutableArray *resurt = [NSMutableArray array];
while ([rs next]) {
NSDictionary *dic = [rs resultDictionary];
[resurt addObject:dic];
}
return resurt;
}
}
return nil;
}
5.更新一条数据,例如更新address为“北京市”:- (void)updateTable{
if ([db open]) {
NSString *sql = @"update person set address = \"北京市\"";
BOOL rec = [db executeUpdate:sql];
if (rec) {
NSLog(@"修改成功");
}
}
}
6.删除数据,例如删除id>3的行- (void)deleteData{
if ([db open]) {
NSString *sql = @"delete from person where id < 3";
BOOL rec = [db executeUpdate:sql];
if (rec) {
NSLog(@"删除成功");
}
}
}
总结:1、除查询以外的操作都成为更新;2、使用FMDataBaseQueue在多线程下保证数据不至于混乱(另行研究);
- 数据持久化之FMDB--基本使用
- 数据持久化之FMDB简单使用
- 数据持久化存储:FMDB的使用
- IOS数据持久化存储之SQLite3第三方库FMDB的使用
- 数据持久化(三)使用第三方类库FMDB
- 数据持久化(三)使用第三方类库FMDB
- 使用第三方类库FMDB实现数据持久化
- 数据持久化-CoreData、SQLite、FMDB
- FMDB&EGODatabase(数据持久化)
- 数据持久化-CoreData、SQLite、FMDB
- ios开发学习笔记--数据持久化之数据库(SQLite.swift)和FMDB
- 持久化FMDB
- iOS之FMDB的基本使用
- iOS数据持久化——FMDB应用
- 数据持久化 coredata、sqlite、fmdb和sqlitepersistentobject
- FMDB——本地数据持久化浅谈
- ios数据本地持久化 之 使用文件持久化
- 数据持久化之sharedpreference的使用
- 8-puzzle 可解性的证明 & 最优解性的证明
- 正向代理与反向代理的区别
- 互联网协议入门(二)
- git添加了ssh key与remote通信时仍要求输入帐号密码
- 求无符号int 的最大值
- 数据持久化之FMDB--基本使用
- struts-form表单的一些问题
- PHP-CI框架通过邮件找回密码
- Tomcat源码导入eclipse/idea
- codeforce contest 713 #371 Div1 A
- HDU 2044 一只小蜜蜂...
- 大二就应该准备校招了
- 坚持#第44天~
- nodes.js中的session