2011-06-15 80 views
10

我無法通過Android應用程序(或程序包)使用的數據總量,因爲官方的API支持已被刪除:如何在Android中獲取當前的sqlite數據庫大小或包的大小?

http://groups.google.com/group/android-developers/browse_thread/thread/df94daae34336aad/f96a8425549c6637(這仍然是目前的狀況?)

Getting installed app size (unsopported黑客 - 不使用它)

那麼有什麼辦法來獲得當前的sqlite數據庫大小?我找到了一個getMaxSize方法或getPageSize,但我無法找到總頁數。

回答

10

您可以查詢這兩個數據庫:

pragma page_size; 
pragma page_count; 

(見sqlite pragma文檔)。

將第一個乘以第二個,您將獲得總共使用的頁面。

+0

這可以工作,但我找不到一種方法來執行SQL代碼與PRAGMA返回的東西!有什麼辦法嗎? – Bedo 2011-06-16 20:41:50

+1

只需運行每一個,就好像它是使用RawQuery的查詢一樣。 (一次一個,沒有綁定參數)。這些應該返回一行。一些信息[這裏](http://stackoverflow.com/questions/2675388/detect-if-a-table-contains-a-column-in-android-sqlite)與一個不同的編譯指示。 – Mat 2011-06-17 04:43:10

+1

我使用這種方法得到不同的結果,而不是檢查數據庫文件的長度。有時並且僅在某些電話上,這會返回比DB文件本身的大小更大的大小。我通過將數據庫文件複製到我的電腦來驗證這一點。 – Chris 2012-11-01 19:17:42

27

也許有人可以證實這是否是一個可以接受的方法,但有一段時間我是用這樣的:

File f = context.getDatabasePath(dbName); 
long dbSize = f.length(); 

乾杯

+0

這是爲我做的;在我看來應該被標記爲答案 – msysmilu 2015-02-02 12:55:57

4

我想補充,關於大小。

當我使用DroidBot的代碼時,它的工作原理。但是,當數據輸入到數據庫時(如果數據非常小),大小可能不會增加。數據庫只會增加1024個字節(例如從8192個字節到9216個字節)。

因此,要查看數據庫大小的增加,請嘗試輸入大量的數據。

相關問題