如何在Android中获取当前的sqlite数据库大小或包大小?

时间:2011-06-15 21:23:37

标签: android sqlite

我无法获取Android应用程序(或包)使用的总数据量,因为官方API支持已被删除:

http://groups.google.com/group/android-developers/browse_thread/thread/df94daae34336aad/f96a8425549c6637(这仍然是目前的情况吗?)

Getting installed app size(不支持黑客 - 不要使用它)

那么有没有办法获得当前的sqlite数据库大小?我找到了一个getMaxSize方法或getPageSize,但是我无法找到总页数。

4 个答案:

答案 0 :(得分:29)

也许有人可以验证这是否是一种可接受的方法,但有一段时间我正在使用它:

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

干杯

答案 1 :(得分:12)

您可以使用以下两个来查询数据库:

pragma page_size;
pragma page_count;

(请参阅sqlite pragma文档)。

将第一个乘以秒,您将获得总页数。

答案 2 :(得分:4)

只是添加有关大小的内容。

当我使用DroidBot的代码时,它可以工作。但是,当数据输入数据库时​​,大小可能不会立即增加(特别是如果数据非常小)。数据库只会以1024字节递增(例如从8192字节增加到9216字节)。

因此,要想立即增加数据库大小,请尝试输入大量数据。

答案 3 :(得分:1)

您也可以使用此原始查询:

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

它返回单行的“大小”列。