相关疑难解决方法(0)

Android SQLite数据库,为什么删除表并在升级时重新创建

在我正在关注的教程和我看到的更多地方,onUpgrade - > drop table if exists,然后重新创建表.

这样做的目的是什么?

private static class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_NAME + " TEXT NOT NULL, " +
                KEY_HOTNESS + " TEXT NOT NULL);"
        );  
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); …
Run Code Online (Sandbox Code Playgroud)

database sqlite android drop-table database-update

29
推荐指数
2
解决办法
4万
查看次数

在android中更新和压缩sqlite数据库

我对 android 有点陌生,我正在研究一个曾经有 40 MB 的 sqlite 数据库的项目。现在我想把 sqlite 的 blob 数据放在 raw 文件夹中,所以我的数据库现在小于 1 MB。问题是在数据库路径(data/data/package name/databases)中,db文件大小还是和以前一样(我的手机root了,每次调试后都可以查看)。在数据库浏览器中,我们可以使用紧凑型数据库来减少删除一些表后的数据库大小。现在我该怎么办?任何帮助,将不胜感激。提前 tnx。

java database sqlite android android-sqlite

4
推荐指数
1
解决办法
264
查看次数

如何在android中使用sqlite VACUUM

我有一个 android 应用程序,它涉及登录到该应用程序并执行许多 CRUD 操作。当用户第一次登录时,如果有可供该用户下载的任何数据,它会快速记录他/她。但是后来重新登录时,这个过程很慢,有时需要大约20到30分钟。因此,我阅读了有关使用 VACUUM 来避免删除记录时创建的可用空间的信息。

我对何时以及如何使用 VACUUM 感到有些困惑,是在打开用户登录时打开数据库吗?或其他时间。

对此的任何建议都会有所帮助。谢谢

java sqlite android android-sqlite

2
推荐指数
1
解决办法
1482
查看次数