2010-09-07 21 views
0

我對Android有很少的疑問SQLite數據庫如何確定android數據庫的最大大小並防止SQLiteFullException?

1.)通常情況下,數據庫存儲在內部存儲器中,我們可以指定外部存儲的路徑並以類似的方式使用它嗎? 2.)如何確定數據庫可用空間的大小?我使用SQLIteDatabase類的getMaximumSize(),但是這給了我1099511626752 這是以字節爲單位嗎?如果假設,那麼這似乎太大而不實際。我正在使用HTC G1來測試它。 3.)我怎樣才能確定表中的條目的大小?或者我必須拉整個桌子並手動查看其大小。這與手機存儲中的相同嗎? 4.)我能否在數據庫中輸入數據之前檢查是否有可用空間?我想防止SQLiteFullException。

謝謝。

回答

0

由於通常存儲在內部存儲器中的數據庫,我們可以指定外部存儲的路徑,並以類似的方式來使用它

據我瞭解,是的,但你將無法使用SQLiteOpenHelper

如何確定數據庫的可用空間大小?我使用SQLIteDatabase類 getMaximumSize(),但那給了我1099511626752這是以字節爲單位嗎?如果假設,那麼這似乎太大而不是實用的。我正在使用HTC G1來測試它。

我認爲這將是getMaximumSize()中的較小值以及存儲數據庫的地方的可用空間量。

如何確定表中的條目大小?

我不知道什麼是「一個條目」,更不用說如何計算它的大小。

我可以在進入數據庫之前檢查是否有任何可用空間可用嗎?

不容易,AFAICT。 Android沒有File上的getFreeSpace()方法。

+0

感謝您的回答。但是,如何計算我的應用程序可用於數據庫增長的可用空間量? – Pritam 2010-09-07 14:07:14

+0

@ mob-king:啊,我找到了 - 使用'android.os.StatFS'。 – CommonsWare 2010-09-07 14:27:57

+0

通過條目我的意思是數據庫行,或者我們可以考慮整個數據庫。我想大致瞭解它在Android存儲中佔用了多少空間。如果我將它拉到PC並查看其大小,它是否一樣?從設備拉數據庫也會導致權限被拒絕。因此,除了仿真器或固定設備之外無法工作。 – Pritam 2010-09-07 15:05:13