您的位置:首页 > 数据库

本地数据库存储获取的大量数据

2015-04-15 16:11 302 查看
1.现在类里建表

/** 数据库实例 */

static FMDatabase *_db;

+ (void)initialize
{

// 1.获得数据库文件的路径

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject];

NSString *filename = [doc
stringByAppendingPathComponent:@"dataBase.sqlite"];

// 2.得到数据库

_db = [FMDatabase
databaseWithPath:filename];

// 3.打开数据库

if ([_db
open]) {

// 4.创表(blob 是二进制形式)

[_db
executeUpdate:@"CREATE TABLE IF NOT EXISTS t_user (id integer PRIMARY KEY AUTOINCREMENT, list blob);"];
}
}

2.连接服务器端 获取数据 然后把获取到的数据插入到表中
+(void)saveData{

for (NSDictionary *dict
in userArray) {

//把dict字典对象序列化成NSData二进制数据

NSData *data = [NSKeyedArchiver
archivedDataWithRootObject:dict];

//把新数据保存

[_db
executeUpdate:@"INSERT INTO
t_user (list) VALUES (?)",data];
}
}

3.下次登录以后先去数据库中查 没有数据的时候再去访问网络获取 记得获取完之后调用saveData保存到本地
+(NSArray *)获取缓存方法名{
//定义一个数组
...

FMResultSet *resultSet =
nil;

resultSet = [_db
executeQuery:@"SELECT * FROM
t_user;"];

while (resultSet.next) {
//获取保存的list

NSData *houseData = [resultSet
objectForColumnName:@"list"];

NSDictionary *houseDict = [NSKeyedUnarchiver
unarchiveObjectWithData:houseData];
//把获取到的字典转换成你自己的模型 然后添加到数组中 最后返回数组
...
}
//返回数组
...
}

4.如果你每次刷新了以后 想把以前的都删除

[_db
executeUpdate:@"DELETE FROM
t_user;"];

如果分页的情况 就是页码是1的时候刷新就删除以前的内容

如果不分页 每次刷新就都删除了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: