【问题标题】:Huawei/honor devices & SQLiteBlobTooBigException华为/荣耀设备 & SQLiteBlobTooBigException
【发布时间】:2019-10-01 22:57:22
【问题描述】:

我在 huawei/honor Android 9.0 设备上 遇到了 SQLiteBlobTooBigException。 对于 5k 活动安装。 怎么了?

    String selectQuery = "SELECT  * FROM " + tableName;
    if(!db.isOpen()){db=this.getWritableDatabase();}
    Cursor cursor = db.rawQuery(selectQuery, null);
    i = cursor.getCount();

其他设备运行良好。 image here

【问题讨论】:

  • 在处理数据库时,BLOBS 绝不是理想之选。

标签: android exception android-sqlite huawei-mobile-services


【解决方案1】:

正如消息所述,Blob (byte[]) 太大而无法放入光标窗口 (4MB)。游标窗口是行的缓冲区。

不推荐使用 Blob,因为 Blob 可以存储的大小大于可以使用 SDK 的 SQLite API 检索的大小。也就是插入行时没有缓冲区,所以大小限制不适用。

解决方法是将 byte[] 保存在文件中,然后将文件的路径保存在数据库中。

【讨论】:

  • 其他设备运行良好。为什么?
  • @ally 我不知道为什么,但它们在某些方面明显不同,导致更大的 Blob 或者以某种方式减小了光标窗口的大小。我相信前者的可能性更大。如果您应用建议的解决方案,那么为什么就变得无关紧要了。
  • 1.您的方式需要应用程序的额外权限。 2.这里https://stackoverflow.com/questions/57726838类似,但是没有Byte[]。 3.看起来像谷歌VS华为的战斗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2021-10-25
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
相关资源
最近更新 更多