Android: база данных SQLite. Нужно ли его создавать? - PullRequest
4 голосов
/ 12 июля 2011

Я изучал некоторые учебники по работе с базами данных sqlite, и все они, кажется, создают новую базу данных, таблицы и т. Д. При первом запуске приложения.Это необходимо?Что делать, если у меня уже есть готовая база данных, которая находится в папке активов, когда приложение установлено?Могу ли я не просто открыть соединение с указанной базой данных и начать использовать ее информацию, или есть какая-то конкретная причина, по которой каждый хочет создать ее с помощью sql при первом запуске?

Ответы [ 4 ]

2 голосов
/ 12 июля 2011

Этот вопрос часто возникает.Попробуйте это руководство, чтобы использовать существующую базу данных на Android: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

1 голос
/ 12 июля 2011
  1. Вы не можете использовать файл базы данных, который находится в папке ресурсов, непосредственно как базу данных SQLite, так как этот файл не будет обычным файлом, расположенным в общей файловой системе.Например, вы можете иметь к нему доступ только для чтения.Поэтому единственный вариант - скопировать эту базу данных из папки активов в файловую систему устройства.
  2. Для того, чтобы впервые создать базу данных и получить к ней доступ, существует специальный вспомогательный класс SQLiteOpenHelper.Читайте об этом здесь .В частности, посмотрите в SQLiteOpenHelper.onCreate() - где должно находиться создание базы данных (или копирование из папки ресурсов, как в вашем случае)
0 голосов
/ 12 июля 2011

Если вы просто свяжетесь с существующей базой данных, она не будет привязана к вашей системе. Так что возможны сбои. Создание БД при первом запуске - наиболее подходящий способ работы с БД.

0 голосов
/ 12 июля 2011

Прошло довольно много времени с тех пор, как я в последний раз работал с базами данных SQLite (в Android), но я считаю, что когда они пишут операторы CREATE, они всегда делают это с условием IF NOT EXISTS (то есть CREATE (DATABASE|TABLE) IF NOT EXISTS...).

Я не знаю, для чего вы будете использовать SQLite, но я верю, что они делают это в Android "просто чтобы убедиться". То есть, если пользователь запускает приложение впервые, БД / таблицы должны быть созданы в первую очередь, если приложение сходит с ума. В противном случае они (вероятно) уже созданы, и этот случай будет обработан предложением IF NOT EXISTS, и они просто продолжат и установят соединение с существующей БД. Беспроигрышный.

(Если по какой-то причине пользователь не первый раз использует приложение, а БД там нет, оно просто будет создано заново. Но это очевидно, не так ли?;))

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