【问题标题】:Rename field in database and reinstall app重命名数据库中的字段并重新安装应用程序
【发布时间】:2014-07-24 17:50:58
【问题描述】:

我正在学习 Android,现在我有关于数据库的课程 - PetTracker。

http://androidsvnex.googlecode.com/svn/trunk/androidsvnex/PetListTracker/src/kr/co/sqlite/persistent/pet/PetDatabase.java

我使用 Eclipse + 我的手机进行测试。

我想在这个应用程序中重命名字段并且这个工作正常,但如果我在更改后运行应用程序,那么我有错误 - 字段不存在,但如果我在手机上卸载应用程序并再次运行应用程序,那么这个工作正常。

如果我作为应用程序运行,那么我该如何更新数据库?

【问题讨论】:

    标签: android eclipse sqlite


    【解决方案1】:

    您应该覆盖 SQLiteOpenHelper 中的 onUpgrade 方法。你应该编写这样的代码。

    public void onUpgrade (SQLiteDatabase db,int oldVersion,int newVersion){
      String update = ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
      db.execSQL(update);
    }
    

    Alter Table 为您提供了非常有限的选项来执行对数据库表的更新。如果您想将数据复制到一个全新的结构中,您应该考虑创建临时表,您可以在其中复制数据,创建新架构,然后在此升级方法中将数据从临时表复制到新表。

    在创建 DBHelper 时确保您的数据库版本号正确。

    【讨论】:

      【解决方案2】:

      您需要实现onUpgrade() 并在此处编写您的更新表。
      您还需要增加您的数据库版本,并在SqliteOpenHelper contructor 中传递一个新版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-27
        • 2017-09-28
        • 2012-02-25
        • 2011-08-19
        • 2018-02-26
        相关资源
        最近更新 更多