通过这篇文章,你可以学习到怎么样去创建一个Room数据库,以及对其进行增删改查的基本操作
implementation(“androidx.room:room-runtime:2.4.2”)
kapt “androidx.room:room-compiler:2.4.2”
//我们添加一张数据库表,叫做Student,其中添加三个属性,以及一个主键
@Entity
data class Student(val name : String,val age : Int,val address : String) {
//主键进行自增 autoGenerate
@PrimaryKey(autoGenerate = true)
var id : Long = 0
}
//创建一个dao接口,进行增删改查的操作
//需要掌握一定的sql语句功底
@Dao
interface StudentDao {
//增加一个数据
@Insert
fun insert(student : Student) : Long
//删除一个数据
@Query("Delete from Student where name = :name")
fun delete(name : String) : Int
//修改一个数据
@Update
fun update(newStudent : Student)
//查找一个数据
@Query("Select * from Student")
fun select() : List<Student>
}
@Database(version = 1, entities = [Student::class],exportSchema=false)
abstract class Appdatabase : RoomDatabase(){
abstract fun studentDao() : StudentDao
companion object{
private var instance : Appdatabase? = null
@Synchronized
fun getDatabase(context : Context): Appdatabase{
instance?.let {
return it
}
return Room.databaseBuilder(context.applicationContext,
Appdatabase::class.java,"app_database")
.build().apply {
instance = this
}
}
}
}
(布局代码就不放进来了,因为很简单,就是四个按钮,对应增删改查)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//在mainActivity中创建四个按钮,分别对应增删改查
val btnAdd : Button = findViewById(R.id.add)
val btnDelete : Button = findViewById(R.id.delete)
val btnUpdate : Button = findViewById(R.id.updata)
val btnSelect : Button = findViewById(R.id.select)
val studentDao = Appdatabase.getDatabase(this).studentDao()
//主动给student类中添加初始数据
val student1 = Student("zhangsan",12,"anhui")
//增加学生的信息进入表中
//因为操作数据库是耗时操作,所以所有的操作都是放在线程中执行,不然可能会阻塞主线程
btnAdd.setOnClickListener {
thread {
student1.id = studentDao.insert(student1)
}
}
//删除名字叫张三的学生
btnDelete.setOnClickListener {
thread {
studentDao.delete("zhangsan")
}
}
//将学生的名字改成lisi
btnUpdate.setOnClickListener {
thread {
student1.name = "lisi"
studentDao.update(student1)
}
}
//将表中的所有学生信息全部打印出来
btnSelect.setOnClickListener {
thread {
for(student in studentDao.select()){
Log.d("message",student.toString())
}
}
}
}
}
=======================================================================================
总结:
通过上述的操作,我们就成功的创建了一个数据表,已经对其进行了增删改查的操作,整体的逻辑代码还是比较简单的
首先创建一个数据表,之后创建一个Dao接口,对数据表进行增删改查的操作。接下来再创建一个database数据库,进行关联,就大功告成了!