【问题标题】:What happens when changing ORMLite database structure within an app在应用程序中更改 ORMLite 数据库结构时会发生什么
【发布时间】:2017-02-06 05:38:10
【问题描述】:

我在我的 android 应用程序中使用 ORMLite 数据库,现在我想更改数据库的整个结构,例如(重命名表、添加/删除列、更改关系等)。

这里的问题是,之前安装了我的应用程序的设备会发生冲突吗?换句话说,在更新应用程序时,ORMLite 是否会留下以前安装的任何痕迹,这些痕迹会与新安装产生冲突?!!因此,如果我有一个名为parent 的表并将其名称更改为guardian,那么我现在在新版本中有两个表吗?!!

如果答案是,那为什么会有数据库版本之类的东西呢?

如果答案是,那么我将如何删除我的应用程序中不再存在的表?我可以使用相同的类名和不同的表名注释来覆盖之前的表吗?

【问题讨论】:

    标签: java android ormlite


    【解决方案1】:

    我没有专门使用 ORMLite。但这只是一个 ORM,这意味着它不会根据特定条件决定是否删除表。这是客户必须根据他们的业务规则专门做的事情。现在在 Android 中,您可以通过特定方式升级当前数据库架构,而无需删除现有表 - https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

    但是在 SQLite 上升级数据库架构有很多限制,即与成熟的 DBMS 不同,有很多操作不受支持。但这也是 SQLite 如此轻量级的部分原因。通常在您的开发周期中,尽可能早地得出一个稳定的数据库架构,稍后需要进行少量添加(SQLite 特别不支持删除列等)。一旦您投入生产并且您不想使用用户数据,那么实施升级逻辑是您最好的选择。

    但如果你仍然想明确删除一个表,我看到 ORMLite 中有相同的 API -

    http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/table/TableUtils.html

    【讨论】:

    • 不幸的是,这对我的情况没有帮助,您给了我假设而不是事实,并且 TableUtils API 确实用于删除表但现有的。
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2015-07-17
    • 1970-01-01
    • 2023-03-07
    • 2014-04-06
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多