2012-03-30 2 views
0

Возможно ли создать имя таблицы базы данных с пользовательского ввода. Во всех обучающих программах, которые я видел, было создано имя таблицы до того, как приложение действительно запущено. В идеале я хотел бы передать String методу onCreate (который вызывается для создания таблицы DB) и использовать эту строку в качестве имени таблицы. Это возможно?База данных Android: создание имени динамической таблицы

ответ

1

Я не использую это для создания первой таблицы, но вот что я использую для создания новых таблиц. Первая таблица в основном пуста, и я удаляю ее из списка списков таблиц. loc это строка, я прохожу. Я нахожусь в процессе перехода его к ContentProvider хотя

public long addTable(String loc) { 
    // TODO Auto-generated method stub 
    ourDatabase.execSQL("CREATE TABLE IF NOT EXISTS " + loc + " (" 
      + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_2TBL 
      + " TEXT NOT NULL, " + KEY_ONE + " TEXT NOT NULL, " 
      + KEY_TWO + " TEXT NOT NULL);"); 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_2TBL, loc); 
    return ourDatabase.insert(loc, null, cv); 

} 
0

Одна вещь, которая будет создана база данных, когда вы делаете Объект DatbaseClass.

Вы можете создать объект, если у вас есть имя строки.

Затем вы можете передать его в функцию, как это сделал Билл Гэри в своем ответе.

0

Вы не сможете использовать метод onCreate() для создания второй таблицы. Потому что он вызывается только при создании базы данных. & Вы не сможете вставить любой аргумент String As Argument. Вы можете создать новый метод для этого.

Метод может выглядеть примерно так,

public void AddDesiredTable(String TableNmae){ 
    /*At first you will need a Database object.Lets create it.*/ 
    SQLiteDatabase ourDatabase=this.getWritableDatabase(); 

    /*then call 'execSQL()' on it. Don't forget about using TableName Variable as tablename.*/ 
    ourDatabase.execSQL("CREATE TABLE IF NOT EXISTS " + TableNmae+ " (" 
     + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_2TBL 
     + " TEXT NOT NULL, " + KEY_ONE + " TEXT NOT NULL, " 
     + KEY_TWO + " TEXT NOT NULL);") 
    } 
Смежные вопросы