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

Android Studio Database Inspector不显示字符串数据求助

排查Database Inspector无法显示字符串数据的方案

1. 核对实体类字段注解

  • 确认字符串字段的@ColumnInfo类型是否为TEXT,避免误设为INTEGER:
    // 错误示例:类型不匹配导致字符串无法存储/显示
    @ColumnInfo(typeAffinity = ColumnInfo.INTEGER)
    var nickname: String? = null
    
    // 正确配置
    @ColumnInfo(typeAffinity = ColumnInfo.TEXT)
    var nickname: String? = null
    
  • 检查字段是否被标记为transient,该关键字会让Room忽略此字段,不会存入数据库

2. 验证数据插入逻辑

  • 插入数据时,确认字符串参数未传入null或空值,可通过日志打印插入前的实体对象:
    val userProfile = UserProfile(1, "张三", "zhangsan@test.com")
    Log.d("DB_DEBUG", "插入的用户数据:$userProfile")
    dao.insertProfile(userProfile)
    
  • 调用DAO的插入方法后,立即查询数据,确认字符串值已被正确写入

3. 检查数据库版本与迁移逻辑

  • 若有版本更新,确认Migration中新增/修改字符串字段的SQL语句正确:
    val MIGRATION_2_3 = object : Migration(2, 3) {
        override fun migrate(db: SupportSQLiteDatabase) {
            db.execSQL("ALTER TABLE user_profile ADD COLUMN email TEXT")
        }
    }
    
  • 尝试卸载应用后重装,清除旧数据库的缓存数据

4. 调整Database Inspector显示设置

  • 右键点击目标数据表,选择Refresh Table刷新数据
  • 右键表头,确认所有字符串字段均被勾选(未被隐藏)
  • 切换到Data视图,避免停留在Schema视图

5. 直接验证数据库文件

  • 通过Device File Explorer导出/data/data/[你的包名]/databases/下的数据库文件
  • 使用SQLite工具(如SQLiteStudio)打开文件,执行查询语句确认字符串数据是否存在:
    SELECT * FROM user_profile;
    

若以上步骤无法解决问题,请补充:

  • 实体类、DAO、DatabaseManager的完整代码
  • Database Inspector显示异常的截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:52:38