烟台市住房和城乡建设厅网站,做网站seo的公司,廊坊网站建设维护,深圳网站设计哪家好目录 1、SQLite数据库
目的#xff1a; 基本操作#xff1a; 缺点#xff1a;
解决#xff1a; 2、ROOM持久性库
目的#xff1a;
优点#xff1a;
导入依赖#xff1a; 主要组件#xff1a;
编辑
使用步骤:
a.定义数据实体 b.定义数据访问对象#xff08;接…目录 1、SQLite数据库
目的 基本操作 缺点
解决 2、ROOM持久性库
目的
优点
导入依赖 主要组件
编辑
使用步骤:
a.定义数据实体 b.定义数据访问对象接口 c.定义数据库类 d.实例化并操作数据库 1、SQLite数据库
目的
保存重复数据结构化数据 基本操作
定义架构的协定创建数据库信息添加到数据库从数据库读取信息从数据库删除信息更新数据库保留数据库连接一般Activity的onDestroy()中关闭数据库 缺点
android.database.sqlite 软件包提供Android上使用数据库所需的API但是API级别较低
没有针对原始SQL查询的编译时验证耗时又易错需要使用大量样本代码在SQL查询和数据对象之间转换
解决
强烈建议使用Room持久性库作为抽象层访问SQLite数据库中信息 2、ROOM持久性库
目的
将数据保存到本地数据库
在SQLite上提供一个抽象层以便充分利用SQLite流畅访问数据库 优点
提供针对SQL查询的编译时验证提供方便注释可最大限度减少重复和容易出错的代码样板简化数据库迁移路径 导入依赖
讲下面依赖项添加到build.gradle文件 dependencies {val room_version 2.6.1implementation(androidx.room:room-runtime:$room_version)annotationProcessor(androidx.room:room-compiler:$room_version)// To use Kotlin annotation processing tool (kapt)kapt(androidx.room:room-compiler:$room_version)// To use Kotlin Symbol Processing (KSP)ksp(androidx.room:room-compiler:$room_version)// optional - Kotlin Extensions and Coroutines support for Roomimplementation(androidx.room:room-ktx:$room_version)// optional - RxJava2 support for Roomimplementation(androidx.room:room-rxjava2:$room_version)// optional - RxJava3 support for Roomimplementation(androidx.room:room-rxjava3:$room_version)// optional - Guava support for Room, including Optional and ListenableFutureimplementation(androidx.room:room-guava:$room_version)// optional - Test helperstestImplementation(androidx.room:room-testing:$room_version)// optional - Paging 3 Integrationimplementation(androidx.room:room-paging:$room_version)
} 主要组件
数据库类(Database):用于保存数据库外界访问数据库数据实体(Entities):表数据访问对象(Dao)提供数据库增删改查的方法 使用步骤:
a.定义数据实体
Entity
data class User(PrimaryKey val uid: Int,ColumnInfo(name first_name) val firstName: String?ColumnInfo(name last_name) val lastName: String?
) b.定义数据访问对象接口
Dao
interface UserDao {Query(SELECT * FROM user)fun getAll(): ListUserQuery(SELECT * FROM user WHERE uid IN (:userIds))fun loadAllByIds(userIds: IntArray): ListUserQuery(SELECT * FROM user WHERE first_name LIKE :first AND last_name LIKE :last LIMIT 1)fun findByName(first: String, last: String): UserInsertfun insertAll(vararg users: User)Deletefun delete(user: User)
} c.定义数据库类
带有Database注解注解相关联 数据实体该类为抽象类继承并扩展RoomDatabase定义获取Dao类的抽象方法
Database(entities [User::class], version 1)
abstract class AppDatabase : RoomDatabase() {abstract fun userDao(): UserDao
} d.实例化并操作数据库
val db Room.databaseBuilder(applicationContext,AppDatabase::class.java, database-name).build()val userDao db.userDao()
val users: ListUser userDao.getAll()