【问题标题】:how to add table to the database when database is already created in android?当数据库已经在android中创建时如何将表添加到数据库中?
【发布时间】:2016-08-17 17:08:58
【问题描述】:

我已经创建了一个带有表的数据库。我想根据用户的命令向该数据库动态添加更多表。

onOpen() 方法没有用,因为它还会更改我以前在数据库中已经存在的表。

【问题讨论】:

  • 使用 rawQuery。您只需要在另一个不是 onOpen() 的地方执行“创建”查询。 sqlite.org/lang_createtable.html
  • 使用原始查询 (SQLiteDatabase myDB = null;) -- (myDB = this.openOrCreateDatabase("TheDatabaseName", MODE_PRIVATE, null);) -- (myDB.execSQL("CREATE TABLE IF NOT EXISTS tablename (id INTEGER PRIMARY KEY AUTOINCREMENT, columna TEXT, columnb TEXT);");) -- (myDB.close();)

标签: android android-studio sqlite android-sqlite


【解决方案1】:

我假设您使用的是 SQLite 数据库。如果是这种情况,这里有一个可行的解决方案:

Create new table in existing DB in separate SQLiteOpenHelper class.

请参阅以下帖子中 rmkrishna 的回答:

首先检查此数据库的当前数据库版本

private final static String DATABASE_NAME = "MainDB";
private static final int DATABASE_VERSION = 1;

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

并增加数据库版本(DATABASE_VERSION),并在升级和 oncreate 方法中添加新表查询,如下所示。

@Override
public void onCreate(SQLiteDatabase db) {
      db.execSQL("old query no need to change");
      db.execSQL("Create your new table here");
}


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

    if (oldVersion < 2) {
       db.execSQL("Create your new table here as well this for update the old DB");
    }
}

【讨论】:

  • 很好的答案,虽然我建议使用 switch 语句来允许增量更新,而不是 if 语句。
  • 之前表的值被删除
  • 您是否增加了版本号?另外,您没有提供任何代码或任何数据库版本,我看到了标签,所以我知道它是 SQLite,但这就是我所知道的,所以我现在不得不做很多猜测。您还可以查看以下链接以获取替代答案:stackoverflow.com/questions/9804083/…
猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多