База данных Android: создание динамического имени таблицы - PullRequest
0 голосов
/ 30 марта 2012

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

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Я не использую это для создания первой таблицы, но вот что я использую для создания новых таблиц.Первая таблица в основном пуста, и я удаляю ее из списка таблиц списка.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 голосов
/ 19 апреля 2015

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

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

    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);")
    }
0 голосов
/ 31 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...