2

几周前我已经上传了一个应用程序来玩商店。此应用程序涉及 sqlite 数据库,该数据库存储有关用户名、密码和其他详细信息的信息,这些信息由用户在本地使用应用程序时提供。

现在我在数据库中添加了更多表和字段,并且想将应用程序上传到 Playstore 作为更新?

我担心的是,如果用户从 playstore 更新应用程序 - 更新后 - 存储在数据库中的所有数据都将被保存,还是用户必须从头开始重新创建所有内容?

让我知道!

谢谢!

4

2 回答 2

7

您必须重写 SQLiteOpenHelper 的 onUpgade 方法。在 OnUpgrade 方法中,您可以删除数据(drop sqlite 命令)或使用附加列(alter sqlite 命令)维护数据或创建新表(create sqlite 命令)。

请参阅以下代码段。

我假设你的版本是 1.(请检查你的 SqliteOpenHelper 类的构造函数)

将版本增加 1。

class DatabaseHelper extends SqliteOplenHelper{

        private static final int DATABASE_VERSION = 2;   //new version of the database
        private static final int Database_name = "MyDatabase";
        private static final String alterUserName = "alter table users add name text";
        private static final String table_users = "create table if not exists "
            + users + "(" + "_id integer primary key autoincrement,"
            + "email text" + ")";

        public DatabaseHelper(Context context) {
        super(context, Database_name, null, DATABASE_VERSION);
        cntxt = context;
    }

        @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL(table_users);
        db.execSQL(alterUserName);

    }
}

现在,每次当您使用数据库更改滚动下一次更新时,请务必将数据库版本增加 1,否则让它保持不变。

于 2013-07-12T12:30:42.933 回答
1

这不会自动为您完成。在您的 SQLiteOpenHelper 中,您需要增加 Schema 整数。这将触发现有用户的升级方法。

添加表不是问题,只需在 onUpgrade 中执行此操作,没有任何问题。

但是要添加字段,您应该使用“ALTER TABLE”SQL 命令

如果添加新列,您可以使用 ALTER TABLE 将它们插入到活动表中。如果重命名或删除列,可以使用 ALTER TABLE 重命名旧表,然后创建新表,然后使用旧选项卡的内容填充新表

在此处查看官方参考

于 2013-07-12T05:37:54.437 回答