2016-08-17 211 views
0

我已经创建了一个带有表格的数据库。我想要在用户的命令中动态添加更多的表格到该数据库。如何在android中创建数据库时将表添加到数据库中?

onOpen()方法没有用,因为它也改变了我之前存在于数据库中的表。

+0

使用rawQuery。您只需在另一个不是onOpen()的地方执行“create”查询。 https://www.sqlite.org/lang_createtable.html –

+0

使用原始查询(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();) – Tasos

回答

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),并在添加新表查询升级和创建方法如下。

@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"); 
    } 
} 
+0

很好的回答,尽管我不建议if语句使用switch语句允许增量更新。 – Waves

+0

删除较早的表的值 – user3807098

+0

您增加了版本号吗? 此外,你没有提供任何代码或任何数据库版本,我看到了标签,所以我知道它是SQLite,但这就是我所知道的,所以在这一点上我不得不做很多猜测。您也可以查看以下链接以获取备用答案: http://stackoverflow.com/questions/9804083/how-to-add-second-table-in-database-in-sqlite –

相关问题