创建数据库,实现对数据库的怎删改查。
在安卓开发过程中,我们经常会与数据打交道,通常都是将数据保存在缓存中,比如简单使用静态的方法,再比如使用getSharedPreferences()。这些方法虽然好用,但是对于数据 *** 纵是不友好的,没有存入数据库中效率高。在这里将使用Room数据库来实现,room数据库的优点是可以避免与SQL打交道了!
一、知识点
最近也是刚刚接触kotlin,在是实现Room数据库的时候,有涉及到thread,因为数据库 *** 作为耗时 *** 作,所以需要在子线程中。
第二个小知识,在kotlin中对于UserBean,是数据类,所以类名前面写为data,这样可以省略toString()等方法
(一)、实现思路
1.首先导入依赖
在app/build.gradle中导入 plugins { id 'kotlin-kapt'}
在defaultConfig{}中加入
javaCompileOptions { annotationProcessorOptions { arguments = [ "room.schemaLocation" : "$projectDir/schemas".toString(), "room.incremental" : "true", "room.expandProjection": "true"] } } 在依赖中导入 //room implementation 'androidx.room:room-runtime:2.2.3' annotationProcessor 'androidx.room:room-compiler:2.2.3' kapt 'androidx.room:room-compiler:2.2.3' androidTestImplementation 'androidx.room:room-testing:2.2.3'
2.创建UserBean,设置主要的属性name,age,id设为自增长
3.创建UserBeanDao接口,设置增删改查的方法
4.创建AppDataBase,创建数据库
5.实现main_activity.xml文件,添加按钮
6.实现insert插入user表中,update更新user表,delete删除user表的某一行,query查询user表。
二、demo
(一).效果图
(二).主要代码
1.UserBean中
@Entity(tableName = "Table_User") data class UserBean (var name: String ,var age: Int){ @PrimaryKey(autoGenerate = true) var id: Long = 0 }
2.UserBeanDao中
@Dao interface UserBeanDao { @Insert fun insert(user: UserBean): Long @Update fun update(user: UserBean) @Delete fun delete(user: UserBean) @Query("select * from Table_User") fun getAllUser(): MutableList@Query("select * from Table_User where age > :age ") fun getUser(age: Int): UserBean? @Query("delete from Table_User where name = :name1 ") fun deleteByTom(name1: String): Int }
3.activity_main.xml布局文件
4.MainActivity
val userDao=AppDataBase.getInstance(this).getUserBean() val user1=UserBean("zhangsan",14) val user2=UserBean("lisi",10) val user3=UserBean("Tom",26) val user4=UserBean("Rose",20) add.setOnClickListener { thread { user1.id=userDao.insert(user1) user2.id=userDao.insert(user2) user3.id=userDao.insert(user3) user4.id=userDao.insert(user4) } } up.setOnClickListener { thread { user2.age=40 userDao.update(user2) } } delete.setOnClickListener { thread { userDao.delete(user1) userDao.deleteByTom("Tom") } } query.setOnClickListener { thread { for (user in userDao.getAllUser()){ Log.d("Main",user.toString()) } } }
三、总结
本文是我第一次参考实现,一个简单的Room数据库。由于篇幅有限,对于room数据库的升级,修改表的内容没有实现。有需要的可以参考第一行代码。
声明,本文参考自《第一行代码》第三版,目前正在积极学习安卓知识,如有错误,敬请指正!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)