Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQLite的android应用程序早期版本的数据_Android_Eclipse_Sqlite - Fatal编程技术网

使用SQLite的android应用程序早期版本的数据

使用SQLite的android应用程序早期版本的数据,android,eclipse,sqlite,Android,Eclipse,Sqlite,我正在使用SQLite来构建一个测验应用程序。我有几个问题要解决,一切都很好。然后我注意到其中一个是错误的,我纠正了它。当我将应用程序运行到模拟器时,没有任何更改。经过一些研究,我发现我必须手动清除设备上曾经运行过的所有数据 有没有比手动擦除数据更好的方法来解决此类问题 如果更改数据库的结构,还需要增加数据库的版本。通过这样做,将调用SQLiteOpenHelper onUpgrade方法。您可以使用此方法执行任何查询,但在您的情况下,只需删除表并调用onCreate方法即可 priva

我正在使用SQLite来构建一个测验应用程序。我有几个问题要解决,一切都很好。然后我注意到其中一个是错误的,我纠正了它。当我将应用程序运行到模拟器时,没有任何更改。经过一些研究,我发现我必须手动清除设备上曾经运行过的所有数据


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

如果更改数据库的结构,还需要增加数据库的版本。通过这样做,将调用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);
    }
}

让我猜猜看:除非您的数据文件夹中有一个现有的DB,否则您可以将一个预种子DB从您的资产复制到您的数据文件夹中。您更正了种子数据库中的错误,并使用新数据库运行应用程序,您的数据在UI中没有更改。是这样吗?@Machinarius差不多就是这样,是的。然后你必须检查数据库版本。然后你已经有了你的解决方案。增加数据库版本并让应用程序基于此运行更新/迁移脚本,或者只是擦除并替换数据库,这是您的选择。SQLiteOpenHelper类具有用于此的方法@Machinarius,CL,就是这样。非常感谢你