【发布时间】:2020-12-09 16:13:30
【问题描述】:
我想创建一个简单的财务报告应用程序。
由于期初余额、库存采购、其他费用、销售和银行业务都是双数,我想使用房间数据库、喷气背包组件
【问题讨论】:
-
请具体说明您的问题。如果您不确定从哪里开始,请尝试在线提供的教程或示例代码并回答您具体面临的任何问题。
标签: kotlin android-room
我想创建一个简单的财务报告应用程序。
由于期初余额、库存采购、其他费用、销售和银行业务都是双数,我想使用房间数据库、喷气背包组件
【问题讨论】:
标签: kotlin android-room
你不能问这种类型的问题,但看看这个示例(使用 roomDB 的最简单方法)
首先你需要定义你的数据库类
@Database(entities = [CompaniesModel::class, UserPoint::class], version = 15) //here is the models which will have the structure of your database
abstract class DataBase : RoomDatabase() {
/**
* define companies dao to make some quires
*/
abstract fun homeDao(): HomeDao
abstract fun companiesDao(): CompaniesListDao
companion object {
@Volatile
private var databaseInstance: DataBase? = null
fun getDatabaseInstance(mContext: Context): DataBase =
databaseInstance ?: synchronized(this) {
databaseInstance ?: buildDatabaseInstance(mContext).also {
databaseInstance = it
}
}
private fun buildDatabaseInstance(mContext: Context) =
Room.databaseBuilder(mContext, DataBase::class.java, "crm")
.fallbackToDestructiveMigration()
.allowMainThreadQueries()
.build()
}
}
以及包含数据库结构的模型
@Entity(tableName = "companiesModel")
data class CompaniesModel(
@PrimaryKey
@ColumnInfo(name = "id")
@SerializedName("id")
var id: Int,
@ColumnInfo(name = "name")
@SerializedName("name")
var name: String,
@ColumnInfo(name = "image")
@SerializedName("image")
var image: String
)
还有你所想的道
@Dao
interface CompaniesListDao {
/**
* this fun to insert data in room db after fetch data from server
*/
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertCompanies(contactModel: List<CompaniesModel>)
/**
* this fun to get data from room db to make some caching in app
*/
@Query("SELECT * FROM companiesModel")
fun getCompaniesList(): List<CompaniesModel>
/**
* this fun to clear companies list from room db
*/
@Query("DELETE FROM companiesModel")
fun clearCompaniesList()
@Update
fun update(contactModel: List<CompaniesModel>)
}
要访问数据,您应该这样称呼它
DataBase.getDatabaseInstance(App.instance).companiesDao().something
【讨论】: