2012-07-13 88 views
0

我想從數據庫中獲取blob。我得到這個錯誤。我對數據庫是新手,這是什麼意思?Android數據庫內存問題mSize = 1048576

07-13 22:21:10.928:E/CursorWindow(13302):需要成長:MSIZE = 1048576,大小= 3279360,可用空間()= 1048491,= numRows行1

看來,我只是有1MB。這是數據庫的限制,還是我的完整應用程序目前僅限於1MB空閒內存?

我沒有問題插入blob到數據庫。之後我關閉了db等......我很高興,如果有人能給我一些地方,我可以看看。

最好的問候,

帕特里克

回答

1

有適用於Cursor BLOB數據1MB的限制。由於限制適用於Cursor,因此您不會看到它插入數據,只會嘗試訪問它。

一般來說,將大數據塊放入數據庫是一個壞主意。相反,您應該將大量數據保存到內部或外部存儲上的文件中,並將文件路徑或Uri保存到數據庫字段中。

+0

感謝您的快速解釋。我想知道我以前是如何做到的。因爲我看到它工作(也許數據有點小?)。我想爲內部數據創建一個contentprovider並將其放在那裏。目前我只有數據庫,並希望暫時放在那裏。 – Patrick 2012-07-13 20:51:44

+0

ContentProvider是一個很好的解決方案,因爲您也可以在適當的時候使用它來提供來自這些Uri值的文件數據。 – Devunwired 2012-07-13 21:01:19

1

在你的SQLite數據庫中存儲大文件是不好的做法。請保存指向該文件的Uri

0

這是因爲你的變量,因爲它要保存太大的光標來處理

以我的日誌的這種提取物作爲一個例子

07-08 10:39:51.324: W/CursorWindow(9207): Window is full: requested allocation 1249663 bytes, free space 398939 bytes, window size 2097152 bytes 

我建議使用callong分離的方法分別稱爲blob或long字符串,因爲我們無法保證Android操作系統本身僅運行此應用程序,其他可能會消耗大量內存