SQLite是一个轻量级数据库,无法在数据表中存储数据量过大的单行数据。SQLite 在 Android 上单行默认最大大概是 2MB 左右(CursorWindow 限制),超出限制会报错:Row too big to fit into CursorWindow。
所以如果我们有存储大量数据的需求时,可以采用文件存储或者选择更换数据库。而使用SQLite也有相应的解决办法,就是分片存储。本文则简述如何使用SQLite分片存储数据。
一、存储原理与思路
分片存储就是把内容切成多段存多行,再拼接。
本文以存储List<double> curveData为例,讲述如何分片存储该数据。
思路就是给curveData单独建一个表,使用外键关联,每个片段存一条记录,同时存一个分片序号(beanId),方便查询时再拼接回来。
二、存储示例
1)DataBean数据结构代码如下:
class DataBean {
int? id;
int? timestamp;
List<double>? curveData;
DataBean({
this.id,
this.timestamp,
this.curveData,
});
DataBean.fromJson(Map<String, dynamic> json) {
id = json['id'];
timestamp= json['timestamp'];
// curveData 不存 JSON,单独存表
}
Map<String, dynamic> toJson() {
return {
'id': id,
'timestamp': timestamp,
// curveData 不存 JSON,单独存表
};
}
}
2)因为要给给curveData单独建一个表

最低0.47元/天 解锁文章
987

被折叠的 条评论
为什么被折叠?



