代码之家  ›  专栏  ›  技术社区  ›  John Moffitt

更新应用程序时是否删除数据库?

  •  1
  • John Moffitt  · 技术社区  · 14 年前

    我在应用程序使用的数据库中添加了一个表,并编写了一些代码来使用该表。我的手机和模拟器一切正常,所以我把最新消息发送到市场。

    这导致我在开发人员控制台中接收到相当多的堆栈跟踪,原因是

    android.database.sqlite.SQLiteException: no such table: flag
    

    (标志是新表)。

    这让我想知道,更新应用程序时是否删除了数据库?目前,在我的应用程序中,我正在查看数据库是否存在,如果存在,那么我不会重新创建它。

    在发送更新之前,我没有捕捉到这一点,因为我在上载调试版本之前卸载了应用程序。

    从那时起,我就推出了一个快速更新,它在新表的所有访问周围都有一个try-catch块(我知道,我知道,首先应该有这个块)。

    2 回复  |  直到 14 年前
        1
  •  4
  •   adamk    14 年前

    不删除用户数据,包括数据库。

    数据库有版本号。当你更新你的应用程序时,你提高版本号,这样你就可以检测到一个现有的“旧”数据库。

    这可用于触发迁移例程。在您的情况下,它应该向数据库添加新表。

        2
  •  0
  •   pawelzieba    14 年前

    SQLiteOpenHelper 就是答案。