Android:如何由用户自己动态创建新的数据库表?

时间:2013-01-10 15:58:04

标签: android database oncreate

我正在尝试找出一种根据用户请求在我的数据库中动态创建新表的方法。我当前的DB类使用以下代码。我试图找出如何更改此能够动态创建新表。我的一个想法是使用此代码并首先使用onCreate创建一个表,该表将包含未来表的名称。从那里,当用户输入一个新表时,我将该表添加到将保存表名的当前表中,然后我将从中选择它并用于实际创建具有该特定名称的表。我不确定这是否真的有用,但这是我刚才想到的,想看看你们的想法。

private static class DbHelper extends SQLiteOpenHelper{

    /* Constructor */
    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + 
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                KEY_FRONT + " TEXT NOT NULL, " + 
                KEY_BACK + " TEXT NOT NULL);"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2){
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}

1 个答案:

答案 0 :(得分:1)

我不确定我是否支持你的想法。我认为最好有一个基础,你实际上是在尝试首先创建一个SQLite String 。在最终创建表之前,拥有一些中间数据持有者也很重要。

就个人而言,我会创建一个表单和Object,它可以读取表单上的所有内容(表名,列号等)并输出您需要的一个字符串。然后,如果需要,您可以将整个String保存到SharedPrefsSQLite,但您更喜欢。