首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android架构组件Room使用详解

Room其实就是一个orm,抽象了SQLite使用,但是它作为Android亲儿子orm,并且原生支持LiveData和Rxjava嵌套使用,学习一下还是不错。...Room有3个主要组件 Database :数据库 Entity : 代表数据库一个表结构 Dao : 包含访问数据库方法 简单使用 添加Google Maven仓库 allprojects {...Java对象(POJO)作为数据库逻辑一个完整整体来表示,即使该对象包含几个字段。..."$projectDir/schemas".toString()] } } } } 您应该将导出JSON文件(表示数据库模式历史记录)存储在您版本控制系统,因为它允许为测试目的创建您数据库旧版本...总结 以上所述是编给大家介绍Android架构组件Room使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,编会及时回复大家

2.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

实现Android本地Sqlite数据库网络传输到PC端

——《微卡智享》 本文长度为4578字,预计阅读7分钟 前言 在开发初期,当Android端嵌入在硬件,并且本地数据库单机业务逻辑挺多,往往要分析数据是否处理正常,需要直接从数据库查看,这时我们一般都是将数据库拷贝到...PC端后查看分析,在虚拟机可以实现直接拷贝,但是真机无法直接访问Android端data/data/包名/databases数据库路径,所以做了一个Demo,通过网络将本地数据库文件传到PC端。...文章开头也说过,开发初期做业务测试时候,往往查询功能还没做完,需要看数据库业务逻辑做是否对,数据是否正常,所以需要在数据库查询。...实现方式 微卡智享 流程设计 上图做了一个简单流程设计图,还是很简单,中间数据库文件传输采用NanoMsg通讯,C#端用用Nuget包NNanoMsg,Android端采用我自己封装...C#:NNanoMsg 要在Nuget包添加NNanoMsg Android端Demo 上图中是Android端Demo所有类文件,主要多是的Room类,像实体创建,Dao使用,还有数据库创建等

1.1K20

MVVM数据持久化(一)——ROOM集成

抽象层,让你访问数据库更加稳健,提升数据库性能。...而且还可以和RxJava配合使用十分契合。 Room有3个主要组件 Database: 包含数据库持有者,并充当与应用程序持久化、关系型数据底层连接主要访问点。...用@Database注解类应满足以下条件: 是一个继承RoomDatabase抽象类。 在注释包含与数据库相关联实体列表。 包含一个具有0个参数抽象方法,并返回用@Dao注释类。...在运行时,您可以通过调用Room.databaseBuilder()或Room.inMemoryDatabaseBuilder()获取数据库实例。 Entity: 表示数据库表。...Dao负责操作数据库方法,也就是说我们一些操作数据库动作都是在这里完成。不同是我们不需要这些都用Dao类当中注解来定义查询。

1.5K20

Android架构组件Room指南

一、简介 Room是Google推出Android架构组件库数据持久化组件库, 也可以说是在SQLite上实现一套ORM解决方案。...创建数据库 RoomDataBase类似SQLite APISQLiteOpenHelper,是提供DB操作切入点,但是除了持有DB外, 它还负责持有相关数据表(Entity)数据访问对象(DAO...(); 三、数据库迁移 3.1 Room数据库升级 在传统SQLite API,我们如果要升级数据库, 通常在SQLiteOpenHelper.onUpgrade方法执行数据库升级sql语句,这些...有人说这种方式升级数据库就像在拆炸弹,相比之下在Room升级数据库简单就像是按一个开关而已。...总结 以上所述是编给大家介绍Android架构组件Room指南,希望对大家有所帮助,如果大家有任何疑问请给我留言,编会及时回复大家

1.2K10

App 组件化模块化之路——Android 框架组件(Android Architecture Components)使用指南

App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南 面对越来越复杂 App 需求,Google 官方发布了Android...待正式发布版本之后 Android Support 包 Fragment 就会默认实现 LifecycleOwner 接口。...(Room 组件) Android 框架提供了 Room 组件,为 App 数据持久化提供了解决方案。...Room 组件提供了数据库操作,配合 LiveData 使用可以监听数据库变化,进而更新 UI 组件。...要使用 Room 组件,需要以下步骤: 使用注解 @Entity 定义实体 创建 RoomDatabase 子类 创建数据访问接口(DAO) 在 RoomDatabase 引用 DAO 用注解 @Entity

1.6K20

【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 )

:room-compiler:2.2.5' 2、定义 Entity 实体类 使用 Room 框架 应用 , Entity 实体类 对应着 数据库表 , 将 Entity 实体类 定义完成后 , 就意味着.../** * 从数据库删除元素 */ @Delete fun delete(student: Student) @Update 注解 更新数据库数据...) @Query 注解 查询数据库数据 , 使用 @Query 注解修饰对应抽象方法 ; 注解可以设置字符串参数 , 该字符串参数就是查询 SQL 语句 , 使用 冒号 : 可访问传入参数...* 设置该数据类对应数据库一张数据表, 表名为 student * 该数据库数据对应一个 Student 类实例对象 */ @Entity(tableName = "student")...) lateinit var name: String /** * 年龄字段 * 数据库列名为 age * 数据库类型为 INTEGER 文本类型

33930

Androidroom数据库使用小结(kotlin)

Room是Google官方推荐使用数据库,相比较某些优秀数据库框架来说,不用过于担心某天库会停止维护,且访问数据库非常流畅,并且提供了与常规ORM框架一样,通过添加编译期注解来进行表和字段配置,譬如...总而言之, Room功能强大,速度和稳定性不弱,还简单易用,算得上是一个优秀数据库。 这里总结下使用room数据库过程和遇到问题,以及如何稳定进行数据库迁移和升级。...首先准备,引入依赖,在app文件夹下build.gradle增加: //ROOM数据库 implementation "android.arch.persistence.room:runtime...第三步,添加room数据库并封装个单例操作类, //AppDb.kt package com.xxx.xx.room import android.arch.persistence.room.Database...当修改表字段或者增加表结构时,数据库升级注意事项: 无论是增加新表还是只是修改表字段或增加表字段,都需要增加下数据库版本号并增加Migration处理, @Database(entities = [User

3K50

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) , 实现了 使用 Room 框架访问 Android SQLite 数据库操作...; 在 Room 框架 Dao 数据库访问对象接口 定义方式需要作出改变 , 涉及到数据库查询 接口方法时 , 其返回值需要 返回 LiveData 类型 , 泛型设置为 List<Student...框架主动查询数据库数据需保留除 LiveData 返回值外正常查询方法 Room 框架 与 LiveData 结合使用之后 , 在 Room 框架 Dao 数据库访问接口中 定义了 LiveData...在 Room 框架 Dao 数据库访问对象接口 定义方式需要作出改变 , 涉及到数据库查询 接口方法时 , 其返回值需要 返回 LiveData 类型 , 泛型设置为 List<Student...通过调用 ViewModel 视图模型 , 访问 Room 数据库框架 , 对数据进行增删改查 , 并通过 LiveData 监听数据库数据 , 如果数据库数据发生改变 , 自动回调 LiveData

62420

Android Architecture Components Part1:Room

所以对于AAC它提供了更好使用灵活性,方便我们集成到我们App。 今天主要是对AAC其中Room组件进行分析。Room是一个稳健SQL对象映射库,用来帮助我们快速实现数据本地存储。...在Android App中进行本地数据存储都是使用SQLite,当我们使用原生SQLite进行本地数据库编写时,我们不仅要定义数据库结构,还要创建SQLiteHelper,编写一连串SQL语句。...对于Room使用主要由三部分构成: Entity:标识数据库表结构 DAO: 标识提供获取数据库数据方法 Database:标识所需要创建数据库 以上三部分在代码中都是通过注释来实现,从而达到代码精简...当然还有别的注释例如外键标明:@ForeignKey DAO 数据库表建好了,现在是提供操作数据数据方法。...在ContactsDataBase还需定义一个抽象方法,让它返回由@Dao注释ContactsDao,即提供获取数据方法。本质数据库暴露操作数据入口。

78420

【Jetpack】ORM 数据库访问框架 Room 简介 ( 对象关系映射 ORM 概念简介 | Room 框架组成部分 - 实体、数据库访问对象、数据库持有者 | Room 框架使用步骤 )

一、对象关系映射 - ORM / Object Relational Mapping ---- Android 系统中使用数据库是 SQLite 关系型数据库 , 使用 Android 提供 api...: Entity Framework ; Python 平台 : DiangoORM ; 在 Android , Google 官方提供了一个基于 SQLite 关系型数据库操作封装 ORM 框架...Database 数据库持有者 , Dao ( Data Access Objects ) 数据库访问对象 , Entity 实体类 , 三者之间关系如下 : 首先 , 在 Android 应用...androidx.room:room-compiler 依赖库 是 Room 持久化库一个 编译时依赖项 , 用于 在编译时生成 Room 的如下实现代码 : AppDatabase 子类 , 用于创建和访问数据库...; Dao 数据库访问对象实现类 , 用于执行 SQL 查询和操作 ; 实体类 Entity 映射器 , 用于将数据库数据映射到实体类 ; androidx.room:room-ktx 依赖库

1.6K20

上手使用 Room Kotlin API

Room 是 SQLite 封装,它使 Android数据库操作变得非常简单,也是迄今为止我最喜欢 Jetpack 库。...developer.android.google.cn/codelabs/android-room-with-a-view-kotlin#0 定义数据库表 在我们数据库仅有一个表,就是保存词汇表。...因为修改列名会涉及到修改数据库模式,因而您需要实现数据迁移。 访问表数据 如需访问表数据,需要创建一个数据访问对象 (DAO)。...Room 会生成将数据插入数据库全部操作,并且由于我们将函数定义为可挂起,所以 Room 会将整个操作过程放在后台线程完成。...我们希望当数据库数据发生改变时候,能够得到相应通知,所以我们返回一个 Flow>。由于返回类型是 Flow,Room 会在后台线程执行数据请求。

1.5K10

【错误记录】Android 中使用 Room 框架访问数据库报错 ( cannot find implementation for xx.xxDatabase. xxDatabase_Impl )

一、报错信息 在 Android , 使用 Room 数据库访问框架操作数据库 , 运行是报如下错误 ; 核心报错信息 : cannot find implementation for xx.xxDatabase...Room 数据库、实体和 DAO。...在代码,应该使用 @Database、@Entity 和 @Dao 等注解来标记相应类和接口。 检查 Room 数据库实现类是否生成成功。...四、检查代码混淆错误 如果您项目使用了混淆或压缩功能,需要在 proguard 文件添加 Room 相关规则,以避免混淆 Room 相关类和接口。...如果以上方法都不能解决问题,可以尝试清除项目并重新构建,或者使用 Android Studio Invalidate Caches / Restart 功能来尝试解决问题。

68820

Android Room数据库使用

增删改查 四、源码 前言   Room数据库是GoogleJitPack组件一个,推出已经有一段时间了,现在使用者也越来越多,Room是一个轻量级ORM(Object Relational Mapping...二、注解使用   注解使用,Room使用很简单,这里有三个基本使用注解,@Database、@Entity、@Dao。分别对于数据库、表、表具体操作(增删改查)。 例如创建一个数据表User。...Database注解表示这个类是用来操作数据库,entities = {User.class}表示当前数据库表,只有一个User表,多表用应用逗号隔开。...version = 1表示数据库版本,可以做数据库升级操作。 注意这是一个抽象类,在编译时Room会帮助构建实现类。 现在运行一下,手机或者模拟器都可以。然后什么都不用去做。...等会数据库表操作就是通过这里点击事件进行触发。

1.1K30

Android Room数据库使用

前言   Room数据库是GoogleJitPack组件一个,推出已经有一段时间了,现在使用者也越来越多,Room是一个轻量级ORM(Object Relational Mapping:对象关系映射...二、注解使用   注解使用,Room使用很简单,这里有三个基本使用注解,@Database、@Entity、@Dao。分别对于数据库、表、表具体操作(增删改查)。 例如创建一个数据表User。...Database注解表示这个类是用来操作数据库,entities = {User.class}表示当前数据库表,只有一个User表,多表用应用逗号隔开。...version = 1表示数据库版本,可以做数据库升级操作。 注意这是一个抽象类,在编译时Room会帮助构建实现类。 现在运行一下,手机或者模拟器都可以。然后什么都不用去做。...等会数据库表操作就是通过这里点击事件进行触发。

66120

Android Jetpack - Room

Room 简介 Room 持久化库提供了一个基于 SQLite 抽象层,以便在利用 SQLite 全部功能同时实现更强大数据库访问 Room 库帮你 App 在设备上创建一个缓存,并作为此 App...在运行时,你可以通过调用 Room.databaseBuilder()或 Room.inMemoryDatabaseBuilder()来获取 Database 实例 Entity 数据库表...DAO 包含用于访问数据库方法 该应用程序使用 Room 数据库来获取与该数据库关联数据访问对象或 DAO。...然后,应用程序使用每个 DAO 从数据库获取实体,并将对这些实体任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库表列对应Room 组件关系图 ?...在最常见示例,Repository 实现了用于决定是从网络获取数据还是使用在本地数据库缓存结果逻辑,既避免了 ViewModel 和数据直接交互又统一了单一真实数据逻辑 Repository

1.9K70

Android 开发中使用协程 | 背景介绍

让我们来深入上述问题,看看该如何将协程运用到我们代码。 处理耗时任务 获取网页内容或与远程 API 交互都会涉及到发送网络请求,从数据库里获取数据或者从磁盘读取图片资源涉及到文件读取操作。...但是在我们 Android 应用中有很多事情处理起来太慢,是不应该放在主线程上去做,比如网络请求、解析 JSON 数据、从数据库中进行读写操作,甚至是遍历比较大数组。...由于 withContext 可让您在不引入回调情况下控制任何代码行线程池,因此您可以将其应用于非常函数,如从数据库读取数据或执行网络请求。...同时,协程在这个原则下也可以被主线程自由调用,网络请求或数据库操作代码也变得非常简洁,还能确保用户在使用应用过程不会觉得 “卡”。...这样一来,即使数据库代码库会不断调用 withContext,它也会留在同一调度器并跟随快速路径,以此来保证性能。

1.5K30

JetPack--Room数据库

JetPack提供了Room数据库,和GreenDAO等开源库一样,在SQLite做了封装 Room主要使用三个注解: 1.Entity:实体类,对应一张表 2.Dao:包含操作表一些列方法 3.Database...需要满足:定义类是一个继承RoomDatabase抽象类,注解定义包含实体类列表,包含一个没有参数抽象方法并返回Dao对象 一、Room上手 首先添加依赖: implementation...将忽略它,属性也可以使用这个注解,表示这个属性将不会生成数据库字段 使用@PrimaryKey注解指定主键并且是自增长 属性还可以指定在数据库字段等,使用@ColumnInfo注解: package...、数据库版本、是否输出日志 使用单例模式时,构造方法不能私有化,因为Room内部会调用构造方法 定义获取Dao对象抽象函数 package com.aruba.room; import android.content.Context...void updateUser(User user); } 首先定义Repository层,里面实现对数据库操作 package com.aruba.room; import android.content.Context

1.5K20
领券