Sqlite База данных хранилища - PullRequest
2 голосов
/ 29 марта 2012

Это может быть глупый вопрос, но все же мне нужно знать точный ответ на него.Когда мы создаем БД для конкретного приложения и разворачиваем это приложение на реальном устройстве, где БД создается системой?На внутренней памяти или на SD-карте ??Если он находится во внутренней памяти по умолчанию, мы можем перенести его на SD-карту, потому что приложение может зависнуть из-за низкого объема внутренней памяти и увеличения размера БД.У меня есть одна БД с таблицей из 9 столбцов.Где будет правильное место для хранения БД?

Ответы [ 5 ]

7 голосов
/ 29 марта 2012

Если вы не указали какой-либо конкретный путь при создании базы данных с использованием SQLiteOpenHelper, он будет (по умолчанию) сохранять его во внутренней памяти устройства:

данные / данные / app_package_name / базы данных / dbFilename

Однако при создании базы данных вы также можете указать свой собственный путь / местоположение, например,

/*creating database in SD card under app's cache directory*/
context.openOrCreateDatabase(context.getExternalCacheDir() + "/dbFileName",
                             Context.MODE_PRIVATE, null);
1 голос
/ 29 марта 2012

попробуйте getDatabasePath на ContextWrapper (http://developer.android.com/reference/android/content/ContextWrapper.html). Если вы находитесь в классе Activity или Application, попробуйте:

Файл dbFile = getDatabasePath (MY_DB_NAME); Log.i (dbFile.getAbsolutePath ());

Редактировать

также см. В этом / данные / данные / packname / базы данных /

0 голосов
/ 03 мая 2017

Он хранится в / data разделе внутреннего хранилища, но обычно недоступен без привилегий суперпользователя (root).

0 голосов
/ 17 декабря 2015

В памяти приложения вы можете сохранить его в data / data / pkgname / database / mydb.db

0 голосов
/ 27 июня 2012

Я столкнулся с аналогичной проблемой, которая отвечает на ваш аварийный вопрос.Я перенес Gingerbread на свою систему и мне нужно использовать базу данных SQLITE.Это по умолчанию, где "Вакас" ранее сказал.Поскольку код, который я использую, был написан кем-то другим, я не знал всего этого и всегда получал в журналах сообщения об ошибках SQLite.Моя внутренняя вспышка была ограничена, и я выбежал из нее, не зная.Мое приложение, которое загружало информацию с сервера, просто сообщало, что загрузка не удалась.Просматривая разные журналы, я обнаружил, что произошли некоторые ошибки SQLITE, но ничего не сообщало мне «диск заполнен».Я думаю, что это слишком низкий уровень для уровня приложений Android.Надеюсь, что это отвечает на ваш вопрос о катастрофе.Система не падает, но ваше приложение будет страдать.

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