Проблемы при создании новых таблиц, когда база данных уже существует - PullRequest
0 голосов
/ 08 ноября 2011

У меня странное поведение.Если база данных не существует, и я выполняю следующий код в своей Деятельности:

listOpenHelper = new ListOpenHelper(ManageListActivity.this);
db = listOpenHelper.getReadableDatabase();
Cursor cursor = db.query(ListOpenHelper.TABLE_NAME, null, null, null, null, null, BaseColumns._ID + " DESC");

База данных создана и таблица LIST создана, здесь нет проблем.

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

productListOpenHelper = new ProductListOpenHelper(ProductListActivity.this);
db = productListOpenHelper.getReadableDatabase();
Cursor cursor = db.query(ProductListOpenHelper.TABLE_NAME, null, null, null, null, null, ProductListOpenHelper.NAME + " ASC");

В этом случае я получаю исключение "android.database.sqlite.SQLiteException: нет такой таблицы: список:, при компиляции: SELECT *ИЗ списка ORDER BY _id DESC "

Если я сотру базу данных и выполню сначала вышеуказанный блок, а после первого блока, ошибка будет в таблице productlist.

Мне нужно создатьвсе мои таблицы в первом исполнении?Мне нравится создавать таблицы, когда пользователь вводит в каждом из действий, есть какой-то хороший способ сделать это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

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

0 голосов
/ 08 ноября 2011

У вас есть две разные базы данных, верно? Если нет, то у вас , вероятно, не должно быть двух разных вспомогательных классов.

Кроме того, создание помощников такими, какими вы являетесь , может не быть идеальным. Смотрите сообщение в блоге:

http://www.touchlab.co/blog/single-sqlite-connection/

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

...