Как узнать текущий размер базы данных sqlite или размер пакета в Android? - PullRequest
11 голосов
/ 16 июня 2011

Я не могу получить общий объем данных, используемых приложением (или пакетом) Android, поскольку официальная поддержка API была удалена:

http://groups.google.com/group/android-developers/browse_thread/thread/df94daae34336aad/f96a8425549c6637 (это все еще текущая ситуация?)

Получение установленного размера приложения (неподдерживаемый взлом - не используйте его)

Так есть ли способ получить текущий размер базы данных sqlite? Я нашел метод getMaxSize или getPageSize, но не могу найти общее количество страниц.

Ответы [ 4 ]

29 голосов
/ 29 июня 2011

Возможно, кто-то может проверить, является ли это приемлемым подходом, но какое-то время я использовал это:

File f = context.getDatabasePath(dbName);
long dbSize = f.length();

Приветствия

12 голосов
/ 16 июня 2011

Вы можете запросить базу данных с этими двумя:

pragma page_size;
pragma page_count;

(см. sqlite pragma docs).

Умножьте первое на второе, и вы 'получу общее количество использованных страниц.

4 голосов
/ 22 марта 2013

Просто для дополнения о размере.

Когда я использовал код от DroidBot, он работает. Но размер может не увеличиваться сразу, когда данные вводятся в базу данных (особенно если данные очень малы). База данных будет увеличиваться только на 1024 байта (например, с 8192 байтов до 9216 байтов).

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

1 голос
/ 05 сентября 2018

Вы также можете использовать этот необработанный запрос:

SELECT page_count * page_size as size FROM pragma_page_count(), pragma_page_size();

Возвращает столбец «size» с одной строкой.

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