You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Java无法将BLOB转为字符串的问题求助

解决SQLite Cursor获取混合类型字段的报错问题

核心方案

SQLite支持动态字段类型,同一个字段可能存储String、null或BLOB值,解决报错的关键是先判断字段实际类型,再调用对应获取方法:

修正后的代码

Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT evd.id,evd.additional_image,evd.overall_remarks FROM emv_validation_details AS evd WHERE evd.id="+id);
while (cursor.moveToNext()) {
    myEdit.putString("emv_id_u",cursor.getString(0));
    
    // 获取字段类型,分支处理不同情况
    int fieldType = cursor.getType(1);
    if (fieldType == Cursor.FIELD_TYPE_NULL) {
        additonal_image_u = null;
    } else if (fieldType == Cursor.FIELD_TYPE_STRING) {
        // 若需将字符串转为字节数组,可自行转换,示例:
        // additonal_image_u = cursor.getString(1).getBytes();
        additonal_image_u = null; // 按业务需求处理字符串场景
    } else if (fieldType == Cursor.FIELD_TYPE_BLOB) {
        additonal_image_u = cursor.getBlob(1);
    }
    
    myEdit.putString("overall_remarks_u",cursor.getString(2));
}
cursor.close();

关键说明

  • cursor.getType(int columnIndex)返回当前字段的实际类型,对应Cursor的常量:FIELD_TYPE_NULL、FIELD_TYPE_STRING、FIELD_TYPE_BLOB
  • 先判断null类型,再分别处理字符串和BLOB类型,彻底避免类型转换冲突
  • 额外建议:表结构设计时尽量避免同一字段存储不同类型数据,可拆分字段或统一存储为BLOB(字符串转字节数组存入),从根源减少这类问题

内容的提问来源于stack exchange,提问作者marivic valdehueza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:50:42