Android и SQLite с использованием SQLiteOpenHelper - PullRequest
0 голосов
/ 09 июня 2010

У меня есть база данных SQLite и несколько таблиц в этой базе данных. Я разрабатываю DBAdapter для каждой таблицы в базе данных. (см. Профессиональную разработку приложений для Android 2 от Reto Meier, листинг 7.1).

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

Проблема в том, что SQLiteOpenHelper только проверяет, существует ли база данных. Есть ли типичное решение для написания помощника, чтобы также увидеть, что таблица (ы) существует? Обычно, когда я отбрасываю таблицу, помощник проверяет, существует ли база данных, и предполагает, что все в порядке.

Кроме того, строка CREATE_DATABASE, использованная в приведенной выше ссылке, создает только одну таблицу. Стоит ли использовать DBAdapter для адаптера ко ВСЕМ моим таблицам? Это не кажется мне чистым.

Справочный материал

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Есть ли типичное решение для написания помощник, чтобы также увидеть, что таблица (ы) существует?

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='...' ORDER BY name;

(подставляя в название вашей таблицы ...)

Если это возвращает 1, ваша таблица существует. Если это возвращает 0, ваша таблица не существует.

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

0 голосов
/ 28 мая 2011

Иногда я хочу бросить стол чтобы я мог убедиться, что он строится правильно, с нуля.

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

Есть ли типичное решение для написания помощник, чтобы также увидеть, что таблица (ы) существует?

В дополнение к тому, что предложил CommonsWare, есть также возможность использовать команду оболочки для получения этой информации.

adb -e shell sqlite3 -batch ${DB_FILE} .table
adb -e shell sqlite3 -batch ${DB_FILE} .schema
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...