我正在尝试找出一种根据用户请求在我的数据库中动态创建新表的方法。我当前的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);
}
}
答案 0 :(得分:1)
我不确定我是否支持你的想法。我认为最好有一个基础,你实际上是在尝试首先创建一个SQLite String 。在最终创建表之前,拥有一些中间数据持有者也很重要。
就个人而言,我会创建一个表单和Object
,它可以读取表单上的所有内容(表名,列号等)并输出您需要的一个字符串。然后,如果需要,您可以将整个String
保存到SharedPrefs
或SQLite
,但您更喜欢。