【问题标题】:Data from previous version of android app using SQLite来自使用 SQLite 的先前版本的 android 应用程序的数据
【发布时间】:2014-07-30 13:29:43
【问题描述】:

我正在使用 SQLite 来构建一个测验应用程序。我有几个问题已解决,一切正常。然后我注意到其中一个是不正确的,我把它说对了。当我将应用程序运行到模拟器时,没有任何改变。经过一番研究,我发现我必须手动擦除曾经运行的设备中的所有数据。

有没有比手动擦除数据更好的方法来解决这类问题?

【问题讨论】:

  • 让我在这里猜猜:除非您的数据文件夹中存在现有数据库,否则您将资产中的预播种数据库复制到数据文件夹中。您纠正了种子数据库中的错误并使用新数据库运行了应用程序,您的数据在 UI 中没有改变。是这样吗?
  • @Machinarius 差不多就是这样,是的。
  • 那你要检查数据库版本。
  • 那么你已经有了你的解决方案。增加数据库版本并让应用程序基于该版本运行更新/迁移脚本,或者只是擦除和替换数据库,选择权在您。 SQLiteOpenHelper 类有这方面的方法。 developer.android.com/reference/android/database/sqlite/…
  • @Machinarius,CL 就是这样。非常感谢

标签: android eclipse sqlite


【解决方案1】:

如果你改变数据库的结构,你还需要增加数据库的版本。通过这样做 SQLiteOpenHelper onUpgrade 方法将被调用。您可以使用希望是此方法执行任何查询,但在您的情况下,只需删除表并调用 onCreate 方法即可。

    private class MyHelper extends SQLiteOpenHelper{

    private final static String DATABASE_NAME = "dbname.db";
    private final static int VERSION = 23; //you need to increase this


    public MyHelper(Context context) {
        super(context, DATABASE_NAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) { 
        db.execSQL(QUERY_CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i2) {
        db.execSQL(Query_DROP_TABLE);
        onCreate(db);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多