使用ROOM数据库,

升级数据库结构,同时请求表记录时,报这个错误

Failed to read row 0, column 29 from a window with 1 rows, 29 columns
exception: Row too big to fit into CursorWindow requiredPos=0, totalRows=1; query: SELECT * FROM TBPLOTRECORD
FATAL EXCEPTION: OkHttp Dispatcher
Process: cn.forestar.lincebao, PID: 15002
android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1047)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession

我使用的是查询全部的方式,现在报上面的错误,SQL语句是查询全部字段(*)

解决方式,我修改了下查询语句就可以,把需要的字段查询出来。

android . database . sqlite . SQLite Blob TooBig Exception : Row too big to fit into Cursor Window required Pos =2, total Rows =3 解决办法: Cursor cursor = db.query(TABLE, null, "id=?", new String[]{id}, null, null, null); 设置一下 Cursor Window 的大小即可 Cursor Window cw = new Cu
读取 数据库 首先要得到 数据库 的位置,在编译的时候 数据库 的位置位于assets目录中的。但在安装调试APP时, 数据库 就会被放到data/data/com.example.administrator目录中, 数据库 的名称为assets目录中的名称。如test.db。 首先读取 数据库 的数据就先得到 数据库 : public class SQLDB { // 数据库 存储路径 String f
1.执行的时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤 2.可判断的条件不一样:where不能对聚合函数进行判断,having可以。 3.执行顺序:where>聚合函数>having
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围: 我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方
这个错误是由于查询结果集太大,超过了 ` Cursor Window ` 的限制所导致的。` Cursor Window ` 是 Android 中用于缓存查询结果的内存结构,它的大小是受限的,一般为 2MB 左右。 针对这个问题,可以通过以下几种方式来解决: 1. 增加每次查询的限制 可以通过在查询时增加查询的限制,每次只查询少量的数据,避免查询结果集太大。例如: ```java QueryBuilder<Data> builder = daoSession.getDataDao().queryBuilder(); builder.limit(100); // 每次查询100条数据 List<Data> dataList = builder.list(); 2. 分页查询数据 可以通过分页查询数据的方式来避免查询结果集太大。例如: ```java QueryBuilder<Data> builder = daoSession.getDataDao().queryBuilder(); builder.limit(pageSize); // 每页查询的数量 builder.offset(pageSize * pageIndex); // 查询的偏移量,即从第几条数据开始查询 List<Data> dataList = builder.list(); 3. 使用 Projection 查询部分字段 如果查询结果中的一些字段不是必要的,可以使用 Projection 查询部分字段,减少查询结果集的大小。例如: ```java QueryBuilder<Data> builder = daoSession.getDataDao().queryBuilder(); builder.projectColumns(DataDao.Properties.Id, DataDao.Properties.Name); // 只查询id和name字段 List<Data> dataList = builder.list(); 4. 压缩数据 如果查询结果集中包含大量的文本或二进制数据,可以考虑使用压缩算法对数据进行压缩,减小查询结果集的大小。例如: ```java QueryBuilder<Data> builder = daoSession.getDataDao().queryBuilder(); builder.where(DataDao.Properties.Id.eq(id)); Data data = builder.unique(); byte[] compressedData = compress(data.getContent()); // 压缩数据 以上是一些可能的解决方案,具体应该根据具体情况进行选择。