Android 能把这张桌子改一下吗?

Android 能把这张桌子改一下吗?,android,database,sqlite,android-sqlite,Android,Database,Sqlite,Android Sqlite,在我以前的应用程序版本中,我创建了一个表,如下所示: public static final String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_TITLE + " TEXT, " + COLUMN_NAME_LOGIN + " TEXT, " + COLUMN_NAME_PASSWORD +

在我以前的应用程序版本中,我创建了一个表,如下所示:

public static final String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME
        + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_TITLE + " TEXT, "
        + COLUMN_NAME_LOGIN + " TEXT, " + COLUMN_NAME_PASSWORD + " TEXT, " + COLUMN_NAME_NOTES
        + " TEXT);";
在当前版本中,我创建了一个如下表:

public static final String CREATE_DATABASE = "CREATE VIRTUAL TABLE " + TABLE_NAME + " USING fts3 "
        + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_TITLE + " TEXT, "
        + COLUMN_NAME_LOGIN + " TEXT, " + COLUMN_NAME_PASSWORD + " TEXT, " + COLUMN_NAME_NOTES
        + " TEXT, " + COLUMN_NAME_FAV + " INTEGER DEFAULT 0, " + KEY_WORD + ");";
因此,现在它是虚拟的,使用fts3创建,并添加了两个新的列
COLUMN\u NAME\u FAV
KEY\u WORD


升级时是否可能以某种方式更改表?如果没有,我该怎么做才能让用户不丢失他们的数据?

通常,向现有表中添加新列是安全的,只要它们可以为空和/或具有默认值。为什么不创建一个现有表的副本,并尝试更改它(副本)以检查发生的情况。

另外,您可能需要设置几个DB标志,以便在DB运行时允许alter tables。

通常,向现有表中添加新列是安全的,只要它们可以为null和/或具有默认值。为什么不创建一个现有表的副本,并尝试更改它(副本)以检查发生的情况。


另外,在DB运行时,您可能需要设置几个DB标志以允许alter tables。

不可能运行简单的alter命令将常规表格转换为

虚拟
表格

相反,你应该:

  • 将表中的数据加载到内存/复制表
  • 删除
    旧表
  • 创建新表
  • 使用步骤1中的数据填充新表

  • 无法运行简单的alter命令将常规表转换为
    虚拟表

    相反,你应该:

  • 将表中的数据加载到内存/复制表
  • 删除
    旧表
  • 创建新表
  • 使用步骤1中的数据填充新表