1

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

4

2 回答 2

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
    }
}
于 2012-12-04T18:56:48.290 回答
1

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

您可以使用sqlite-analyzer 之类的工具来估计您的数据在增长时可能占用多少空间,但没有简单的方法可以在运行时找出您离限制有多近。

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

于 2012-12-04T07:32:32.623 回答