1

アプリケーションのSQLiteDBで使用可能な空き容量を取得する方法はありますか?SQLiteDatabase.getMaximumSize()がDBの最大サイズを返すことがわかりましたが、データベースが使用している現在のバイト数を取得する方法はありますか?

4

2 に答える 2

2

あなたの質問に答えるために、はい、DB が現在使用しているスペースを確認する方法があります。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 (DB ファイルの一時コピーを作成する)は使用できませんが、 PRAGMA auto_vacuumを有効にすることをお勧めします。これにより、少なくとも DB ファイル内の未使用のページが範囲外に大きくならないことが保証されます。

于 2012-12-04T07:32:32.623 に答える