当前位置: 首页 > news >正文

Room数据库框架的使用

一、引入依赖


//Room数据库框架
implementation "androidx.room:room-runtime:2.4.0"
annotationProcessor "androidx.room:room-compiler:2.4.0"

二、数据库的初始化

1、从studio的asset目录中,读取并复制到内存缓存中,

try { ProjectListDataBase projectListDB = Room.databaseBuilder(mActivity.getApplicationContext(), ProjectListDataBase.class, GlobalConstant.BRIDGE_DETECT_DB_NAME) .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) .createFromAsset(GlobalConstant.BRIDGE_DETECT_DB_NAME) .addMigrations(UpdateDB.BRIDGE_DETECT_MIGRATION_1_2) .allowMainThreadQueries() .build(); } catch (Exception e) { LogUtils.log(e.toString()); }

2、可以从指定路径中读取数据库

String dbPath = FileUtils.getFileBasePath() + File.separator + uid + File.separator + File.separator + GlobalConstant.PROJECT_DB_NAME; File file = new File(dbPath); if (file.exists()) { projectDB = Room.databaseBuilder(getApplicationContext(), ProjectDataBase.class, dbPath) .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) .addMigrations(UpdateDB.PROJECT_MIGRATION_1_2) // .fallbackToDestructiveMigration() .allowMainThreadQueries() .build(); } else { LogUtils.log("initProjectDB: 数据库不存在------"); }

三、定义数据实体

@Parcelize @Entity(tableName = "project_member_check_result") public class ResultListBean { @PrimaryKey @NonNull @ColumnInfo(name = "project_task_id") public Integer taskId; @NonNull @ColumnInfo(name = "check_user_id") public Integer checkUserId; @NonNull @ColumnInfo(name = "check_time") public String checkTime; @Ignore public int totalCount; @Ignore public int detectCount; //非表中字段 }

四、定义数据访问对象(DAO)

@Dao public interface ResultListDao { @Insert(onConflict = REPLACE) long insert(ResultListBean bean); @Query("SELECT * FROM project_member_check_result WHERE project_task_id= :taskId and create_user_id =:uid") ResultListBean getResultByTaskId(int taskId, int uid); @Query("delete from project_member_check_result where project_task_id= :taskId and create_user_id =:uid") int deleteByTaskId(int taskId, int uid); }

五、‌创建数据库类(Database)

@Database(entities = {ProjectListBean.class, ResultListBean.class},version = BRIDGE_DETECT_ROOM_VERSION,exportSchema = false) public abstract class ProjectListDataBase extends RoomDatabase { public abstract ProjectListDao getProjectListDao(); public abstract ResultListDao getResultListDao(); }

六、数据库的使用

DiseaseDao diseaseDao = projectDB.getDiseaseDao(); List<DiseaseBean> diseaseBeans = diseaseDao.getDiseaseListByLevel(bean.diseaseLevel, bean.typeUuid);

七、数据库的升级

在RoomDatabase中,初始化时,指定version。在第二步,数据库初始化的时候,提到方法 .addMigrations(UpdateDB.BRIDGE_DETECT_MIGRATION_1_2),,这是用来数据库升级的方法,代码中是从数据库版本1,升级到版本2

public static Migration BRIDGE_DETECT_MIGRATION_1_2 = new Migration(1, 2) { @Override public void migrate(@NonNull SupportSQLiteDatabase database) { try { database.execSQL("CREATE TABLE IF NOT EXISTS 'tunnel_list' (" + "'id' TEXT PRIMARY KEY NOT NULL, " + "'company_id' INTEGER NOT NULL, " + "'longitude' TEXT, " + "'flag' INTEGER, " + "'tunnel_id' INTEGER NOT NULL, " + "'check_time' TEXT, " + "'deck_pavement' INTEGER )"); } catch (Exception e) { LogUtils.log("BRIDGE_DETECT_MIGRATION_1_2、、、、、、"); } } };
http://www.jsqmd.com/news/617456/

相关文章:

  • 芯片研发大概率是专家系统打底,大模型在旁边做辅助
  • 2026年昆明婚恋机构评测:如何找到兼具性价比与可靠性的脱单服务? - 2026年企业推荐榜
  • 八大网盘直链下载助手:免费获取真实下载链接的完整指南
  • 终极网盘直链下载指南:8大平台一键提速,告别限速烦恼
  • 2026 SCI润色机构推荐,靠谱学术服务怎么选 - 博客万
  • 分析2026年企业数智化转型制造商,汉数科技性价比究竟如何 - 工业推荐榜
  • 植物大战僵尸终极辅助工具:PVZ Toolkit完全指南,免费解锁无限阳光与全功能
  • 3步解锁网盘下载自由:告别龟速,拥抱高效下载新时代
  • PUA Skill:用大厂 PUA 话术“调教“你的 AI 编程助手,效率直接翻倍
  • 如何用一键脚本轻松搞定Windows 10/11全版本安装?终极指南来了!
  • 终极指南:如何用PvZ Toolkit轻松修改植物大战僵尸游戏体验
  • 惠州市惠城区兴旺搬迁服务部:惠城区居家搬迁 搬家公司电话 - LYL仔仔
  • 鸿蒙hdc命令
  • 2026年9款主流AI视频生成器功能评测
  • LeetCode 48:三种解法玩转图像旋转(Python,Java解法)
  • OpenClaw云端体验:星图平台Qwen3.5-9B镜像快速验证方案
  • OpenClaw飞书插件怎么安装?新手从下载、配置到跑通全流程详解
  • 如何在Linux上安装哔哩哔哩客户端:终极完整指南
  • 品牌组合的“协同”价值:多品牌共享渠道、技术、声誉的条件
  • 基于JavaScript的跨平台网盘直链解析引擎:构建高性能分布式文件下载解决方案
  • skill整理-接口文档生成
  • xmame(0.106)在imx6q上移植
  • 终极键盘防抖软件指南:彻底解决机械键盘重复输入问题
  • BepInEx实战指南:5步构建Unity游戏模组开发环境
  • 3分钟学会Windows和Office激活:KMS_VL_ALL_AIO一键解决方案
  • 让老旧Mac重获新生:OpenCore Legacy Patcher完整使用指南
  • 八大网盘直链下载助手:免费高速下载的完整终极解决方案
  • 碧蓝航线Alas脚本:让游戏自动化的终极懒人指南 [特殊字符]
  • SpringBoot+MyBatis-Plus 实现用户管理模块 CRUD + 分页 + 条件查询(电商系统实战,代码可直接复制)
  • 百度网盘直链解析工具:让下载速度飞起来的秘密武器