首页 > 解决方案 > 构建/部署 Android 应用程序时是否应该已经创建 SQLite 表?

问题描述

作为一个新手,我想知道这样做的正确方法是什么:我看过几个教程都创建了一个数据库,然后CREATE TABLE x IF NOT EXISTS以一种只能在用户设备上运行的方式使用。

我试图找出这是否是“正确”的方法 - 以及为什么我们显然避免创建和部署一个包含所有预期表的良好设置的数据库 - 但到目前为止没有发现任何相关的(可能是因为我仍然缺乏词汇以更好地搜索它...)。

在我看来,这可能会在用户设备上引入不必要的错误,而我看不到任何优势!

期待你的见解!


编辑:

我已被指向用于数据库处理的Room,我将对其进行研究!但是我的问题仍然没有答案。改写:
何时/在何处创建 db 表(在构建之前/在构建期间/在用户设备上)?这个决定背后的原因是什么?

标签: androiddatabasesqlite

解决方案


使用 Android sqlite 的规范方法是用于SQLiteOpenHelper管理数据库模式生命周期。应该首先创建表的助手onCreate()在运行时第一次打开数据库时被调用,例如getWritableDatabase(). 请参阅SQLiteOpenHelper onCreate() / onUpgrade() 何时运行?更多细节。

我认为IF NOT EXISTS代码气味。例如,SQLiteOpenHelper onCreate()每个数据库文件最多调用一次 with,因此在正确的程序中不可能有任何预先存在的表开始。因此IF NOT EXISTS只会隐藏其他问题,直到很久以后才会发现。


推荐阅读