iOS sqlite大数据分段加载的实现,sqlite数据库的操作

时间:2021-06-14 13:27:16

数据库管理类(自己封装的,挺简单的)

//

//  MyDataBaseManger.m

//  DB_Test

//

//  Created by admin on 17/2/7.

//  Copyright © 2017年 HWWY. All rights reserved.

//

#import "MyDataBaseManger.h"

#import "FMDB.h"

@interface MyDataBaseManger()

@property(nonatomic,strong)FMDatabase *dataBase;

@end

@implementation MyDataBaseManger

@synthesize dataBase;

static MyDataBaseManger *manager = nil;

+(MyDataBaseManger *)createManager

{

if (manager == nil) {

manager = [[MyDataBaseManger alloc] init];

}

return manager;

}

-(void)dataBaseWithFile:(NSString *)fileName

{

if(fileName == nil){

NSLog(@"文件名不能为空");

return;

}

NSString *path = [[NSBundle mainBundle]pathForResource:fileName ofType:nil];

if (path == nil) {

NSLog(@"找不到文件路劲");

return;

}

if (path) {

dataBase = [[FMDatabase alloc]initWithPath:path];

if (![dataBase open]) {

NSLog(@"数据库打开失败");

return;

}

}else{

NSLog(@"数据库路径获取失败");

}

}

-(NSArray *)getArrayData:(NSString *)sqlString

{

//每次对数据操作的时候都必须打开数据库,这个东西说不定啥时候就关闭了

[self openDataBase];

NSMutableArray *array = [NSMutableArray array];

FMResultSet *result = [dataBase executeQuery:sqlString];

while (result.next) {

NSDictionary *tempDict = [result resultDictionary];

[array addObject:tempDict];

}

return  array;

}

/**

数据库打开类

*/

-(void)openDataBase

{

if ([dataBase close]) {

[dataBase open];

}

}

@end

调用的地方:

//下面是一个简单的例子

//开始值得位置

int startTag = 0;

//每次的增量

static int temp = 30;

NSString *deaseName = @"%%病%%";

//拼接sql语句

NSString *sqlGetAll = [NSString stringWithFormat:@"select * from student where term_name like '%@' limit %d, %d;",deaseName, startTag,temp];

//初始化我们的数据库管理对象

dataBaseManager = [MyDataBaseManger createManager];

[dataBaseManager dataBaseWithFile:@"testDB.db"];

NSArray *arr = [dataBaseManager getArrayData:sqlGetAll];

NSLog(@"%@",arr);

下面只需要对arr里面的字典封装为model就可以使用了,上面我写的startTag和temp封装到下拉控件就可以了,是不是很简单哦。

这样封装的好处,sql语句随心写,返回数据随便解析。