获取SQLite可用空间%

时间:2012-12-03 20:51:04

标签: android sqlite

有没有办法让应用程序的SQLite DB可用空间量?我看到SQLiteDatabase.getMaximumSize()返回数据库的最大大小,但有没有办法获取数据库占用的当前字节数?

2 个答案:

答案 0 :(得分:2)

要回答您的问题,是的,有一种方法可以检查数据库当前使用的空间大小。正如Joe所说,你可以获取文件路径并检查文件的大小。

之前我使用过这种方法来防止数据库增加到特定大小。在将数据写入数据库之后,我会调用一个函数来检查其大小并在必要时删除行。

public synchronized void checkDbSize()
{
    File f = m_context.getDatabasePath(DATABASE_NAME);
    long dbSize = f.length();

    if(dbSize > DB_SIZE_LIMIT)
    {
        //Delete X rows from DB
    }
}

答案 1 :(得分:1)

没有有意义的默认最大尺寸;您将首先遇到设备的存储大小限制。

您可以使用像sqlite-analyzer这样的工具来估算数据在增长时可能占用的空间大小,但是没有简单的方法可以在运行时找出接近限制的数据。

如果您担心数据库变得太大,则必须定期清理旧数据。 您不能使用VACUUM(它创建数据库文件的临时副本),但您可能希望启用PRAGMA auto_vacuum,这至少可以确保数据库文件中未使用的页面不会超出范围