2015-04-20 2 views
1

Я пытаюсь написать приложение Android, которое содержит базу данных, которая будет динамически изменять свою схему на основе ввода пользователем.Вам нужно изменить схему базы данных в методе onUpgrade для SQLiteOpenHelper?

Например, предположим, что изначально у вас есть таблица, в которой единственным столбцом является столбец для разных пород щенков. Это был бы первичный ключ. Затем пользователь может динамически добавлять новые атрибуты, которые будут соответствовать новым столбцам в этой таблице (например, цвет, есть пятна, размер и т. Д.)

Мне было интересно, должен ли выполняться запрос ALTER TABLE в onUpgrade или я могу сделать это другим методом в подклассе SQLiteOpenHelper. Я действительно не знаю, действительно ли необходимо увеличивать версию базы данных каждый раз, когда пользователь хочет добавить новый атрибут. Благодаря!

ответ

0

Мне было интересно, должен ли выполняться запрос ALTER TABLE в onUpgrade или я могу сделать это другим методом в подклассе SQLiteOpenHelper.

Вы можете выполнять операторы ALTER TABLE всякий раз, когда хотите, хотя (как и для всех операций ввода-вывода базы данных) на фоновом потоке, пожалуйста.

В вашем случае, я не знаю, почему вы используете SQLiteOpenHelper. Точка за SQLiteOpenHelper заключается в том, чтобы помочь разработчикам создавать приложения с фиксированными (для каждой версии) схемами. Это не тот маршрут, который вы принимаете, и в этом случае SQLiteOpenHelper может не очень помочь.

0

onUpgrade будет вызываться только в том случае, если файл базы данных уже существует, но сохраненная версия пользователя ниже запрошенной в конструкторе. Я использовал эту функцию для выполнения изменений, внесенных в схему базы данных при выпуске новой версии приложения. Но если вы хотите динамически добавлять столбцы, да, вы можете использовать команду ALTER TABLE.

Смежные вопросы