Jin*_*Jin 5 sqlite size android
我正在尝试按照以下方式进行操作:
SELECT bytes from user_segments where segment_name = 'TABLE_NAME';
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式获得整个数据库的大小
mDb = SQLiteDatabase;
long size = new File(mDb.getPath()).length();
Run Code Online (Sandbox Code Playgroud)
是否有可能获得单个表在Android的SQLiteDatabase中占用的存储空间?
编辑 -
由于缺乏响应,我猜想SQLite无法实现。我目前正在使用一种hack-ish方式,其中我计算表中的行数并估计单行占用的空间(基于给定的表模式)。
如果您主要将二进制或字符串数据存储在单列中,则可以使用聚合查询:
SELECT SUM(LENGTH(the_column)) FROM the_table
Run Code Online (Sandbox Code Playgroud)
即使每行的大小变化很大(例如,如果您将图片存储在数据库中),这也可以为您提供合理的估计。但是,如果您有许多列,每列中的数据量都很小,那么您的方法(估计每行的固定大小)会更好。
在Android上,你可以像下面这样实现:
SQLiteDatabase database = ... // your database
// you can cache the statement below if you're using it multiple times
SQLiteStatement byteStatement = database.compileStatement("SELECT SUM(LENGTH(the_column)) FROM the_table");
long bytes = byteStatement.simpleQueryForLong();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |