0

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

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);
    }

}
4

1 回答 1

1

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

就我个人而言,我会制作一个表单和一个Object可以读取表单上所有内容(表名、列号等)并输出您需要的字符串的表单。然后,如果需要,您可以将整个保存StringSharedPrefsSQLite您喜欢的任何位置。

于 2013-01-10T16:04:59.820 回答