2011-01-31 32 views
-1

我使用Base64將圖像編碼爲字符串,並且我將這些圖像上傳到遠程數據庫中,並放在表USER的一行中。該行是TEXT,因爲我不知道是否有比TEXT更多空間的anothr字符串類型。SQL DB中TEXT類型的行可以有多大(以KB爲單位)?

當我很小的圖像,存儲與5或10 KB的空間,它們存儲OK,當我得到這些圖片從SQL數據庫回我的應用程序,我可以將它們解碼成位圖,並將其顯示到ImageView的。

問題:當我存儲圖像與例如110 KB的空間,我認爲他們不存儲在SQL數據庫中我的表USER的TEXT行中,因爲當我嘗試解碼它們時,我得到了一個錯誤,他們無法解碼,但我不知道爲什麼,因爲Base64的解碼功能只是在他無法解碼時返回null。

有辦法解決我的問題嗎?

TEXT類型的行可以在SQL DB中有多大(以KB爲單位)?

在這裏使用TEXT最好的選擇?或者還有另一種類型可以存儲更長的字符串(例如大於100KB)?

感謝

回答

3

我會使用BLOB而不是TEXT。

但是我認爲更好的方法是將圖像存儲在SD卡中的同時將圖像存儲在數據庫中。原因是數據庫存儲在設備的內部存儲器上(在許多情況下,它只有20 - 50 MB可用)。所以如果有很多圖像,那麼可以利用整個內部存儲器使得整個設備幾乎不可操作。

0

當您將數據插入列標記的文本,它就會被轉換爲支持的字符編碼之一。你應該看看SQLite 3 Datatypes definitions。我想你會希望你的數據存儲在BLOB中,因爲你希望存儲原始數據而不考慮實際編碼的字符串。

+0

那麼如果我將THype從TEXT更改爲LONGTEXT問題解決? (這是mySQL和SQlite) – NullPointerException 2011-01-31 18:37:41

相關問題