android - 在 Kotlin 中实例化 Room 数据库的正确方法
问题描述
我正在用 Kotlin 编写我的第一个 Android 应用程序。我想知道如何实例化一个房间持久性数据库,以便我可以从许多不同的活动中访问它。抱歉,如果我的问题很愚蠢且不太具体,但我不确定哪些细节可能有用。
解决方案
试试这种方式.. 像下面这样进行应用程序级别的活动以创建数据库。
class AppActivity:Application() {
companion object {
var db: AppDatabase? = null
fun getDatabase(): AppDatabase? {
return db
}
}
override fun onCreate() {
super.onCreate()
db= Room.databaseBuilder(applicationContext, AppDatabase::class.java,"DB").allowMainThreadQueries().build()
}
}
之后,此活动在应用程序标记的清单中定义..
android:name=".app.AppActivity"
之后做道课..
@Dao
interface TodoDao {
@Query("SELECT * FROM Todo")
fun getTodoData()= mutableListOf<Todo>()
@Insert
fun insertTodo(todo: Todo)
@Update
fun updateTodo(todo: Todo)
@Delete
fun deleteTodo(todo: Todo)
}
制作数据库类以访问所有 dao 类..
@Database(entities = arrayOf(User::class,Assignment::class,Todo::class, Student::class,Event::class,Comment::class,Feedback::class ,Achivement::class,Note::class, Syllabus::class, Education::class, Mark::class, UserWork::class, Exam::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun getUser(): UserDao
abstract fun getStudent(): StudentDao
abstract fun getEducationDao(): EducationDao
abstract fun getWorkDetails(): UserWorkDao
abstract fun getExamDao(): ExamDao
abstract fun getMarkDao(): MarkDao
abstract fun getSyllabusDao(): SyllabusDao
abstract fun getNoteDao(): NoteDao
abstract fun getAchivement():AchivementDao
abstract fun getFeedbackDao():FeedbackDao
abstract fun getCommentDao():CommentDao
abstract fun getEventDao():EventDao
abstract fun getAssignDao():AssignmentDao
abstract fun getTodoDao():TodoDao
}
为待办事项制作表格..
@Entity
class Todo {
@PrimaryKey(autoGenerate = true)
var id:Int=0
var time:String=""
var activityName:String=""
var hours:String=""
var types:String=""
}
在活动或片段插入数据之后,如下所示..
var data=Todo().apply {
time=mSpTime?.selectedItem.toString()
types=mSpTypes?.selectedItem.toString()
activityName=mEtAname?.text.toString().trim()
hours=mEtHour?.text.toString().trim()
}
AppActivity.getDatabase()?.getTodoDao()?.insertTodo(data)
推荐阅读
- javascript - 从字符串创建 JavaScript 对象
- ios - 跟踪仅包含 WebView 的应用的退出流程
- filter - 0 到 65535 通过低通数字滤波器
- google-cloud-platform - GCF:Pubsub 调用旧版本
- xml - 如何解决android stuido中的元素类型错误
- python - Python从Excel中的字符串列中提取度量单位和附加数字
- flutter - Flutter_gen 的 Android Studio 自动导入
- tableau-desktop - 在 Tableau 中的同一条形图中绘制每个类别的总销售额以及总销售额
- flutter - 请求 GET 时如何更新(而不是添加)容器中的数据?飘飘然
- sql-server - 带有 SQL Server 2019 Express 的 Windows Server 2019 上的 Hangfire