有没有办法让应用程序的SQLite DB可用空间量?我看到SQLiteDatabase.getMaximumSize()返回数据库的最大大小,但有没有办法获取数据库占用的当前字节数?
答案 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,这至少可以确保数据库文件中未使用的页面不会超出范围