簡體   English   中英

Android Kotlin 中的多個本地數據庫使用 Room 和 ViewModel

[英]Multiple Local Databases in Android Kotlin Using Room and ViewModel

如何使用ViewModel class 在房間中添加多個數據庫? 我是否需要為每個數據庫使用不同的ViewModel class 和不同的@Entity和不同的@Dao ,或者我可以使用另一個數據庫的相同的@Entity@Dao ,抱歉,如果問題很明顯,請提前致謝

我用相同的@Entity@DaoViewModel嘗試了不同的數據庫,沒有用

我也嘗試了不同的一切,數據庫出現了但我無法查詢它,請幫助:(

是的,對於 Room 中的每個數據庫,您需要一個單獨的實體 class 和道 class。 這是因為每個數據庫都會有自己的一組數據,Entity 和 Dao 類用於定義模式並提供對數據庫中數據的訪問。

    // Define the Entity class for each database
@Entity(tableName = "data1")
data class Data1(
    @PrimaryKey(autoGenerate = true) val id: Int,
    val data: String
)

@Entity(tableName = "data2")
data class Data2(
    @PrimaryKey(autoGenerate = true) val id: Int,
    val data: String
)

// Define the Dao class for each database
@Dao
interface Data1Dao {
    @Query("SELECT * FROM data1")
    fun getAll(): List<Data1>

    @Insert
    fun insert(data: Data1)

    // Other database operations...
}

@Dao
interface Data2Dao {
    @Query("SELECT * FROM data2")
    fun getAll(): List<Data2>

    @Insert
    fun insert(data: Data2)

    // Other database operations...
}

// Define the ViewModel class for each database
class MyViewModel1: ViewModel() {
    val db1: Database1
    val db2: Database2

    init {
        db1 = Room.databaseBuilder(context, Database1::class.java, 
   "db1").build()
        db2 = Room.databaseBuilder(context, Database2::class.java, 
   "db2").build()
    }

    fun getDataFromDb1(): List<Data1> {
        return db1.data1Dao().getAll()
    }

    fun getDataFromDb2(): List<Data2> {
        return db2.data2Dao().getAll()
    }

    // Other database operations...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM