我從互聯網上下載了一個數據庫。我將它保存在我的datase文件夾中,然後打開它。 在數據庫裏有一個包含6個字段的「廣告」表。這些字段中的2個是BLOB。當我想從這張表中讀取時......我遇到了一些問題......我注意到,當我讀取一個大於1兆字節的blob字段的行時,這會導致例外......「從行中獲取字段插槽0 col 0失敗「。如果它是一個小blob,一切都OK ......預先感謝:)Android中的光標大小限制SQLite數據庫
回答
由於動態解壓縮,內部資產的限制爲1MB; 1MB限制似乎也適用於Cursor blob,但這似乎沒有記錄在任何地方。
一般來說,你應該避免SQLite中的斑點,因爲它們表現不佳;而是將blob數據保存爲文件並將文件的位置存儲在數據庫中。
您正在使用的查詢'選擇'說blob?你可以省略它嗎?如果你不能,你使用:
blob = rs.getBlob(column) ;
InputStream in = blob.getBinaryStream();
或
blob.getBytes(1, lengthOblob) ;
第一種方法可以讓你在閱讀大塊的斑點。第二個將一次性加載blob。
我不確定你是什麼意思的「一次加載」。假設'getBlob()'返回一個'byte []',數據已經存在於堆中...... – vaughandroid 2012-09-04 10:03:56
假設你的'rs'是一個Cursor,那麼第一次調用getBlob()會導致大數據失敗,因爲光標窗口大小。 – sgibly 2015-03-27 19:18:48
看起來像Android的BLOB的支持尚未實現......
http://www.basic4ppc.com/forum/basic4android-updates-questions/6648-support-sqlite-blob.html
哪些數據存儲在BLOB字段?我會猜測圖片。
我會建議不要使用BLOBs。文件系統是二進制數據更好的選擇。
你能解釋一下你想用數據庫完成什麼嗎?
更好的回答:不要在任何*數據庫中使用BLOB。RDBM不太適合存儲大量未格式化的數據 - 這就是文件系統的用途。 – 2011-05-19 05:58:56
@David Souther感謝您的評論,你是對的。我想認爲BLOB對某些東西是有用的,這就是爲什麼我不那麼確定。但是,我想不出一個好的用例。存儲BluRay電影? (開玩笑) – Jonathan 2011-05-19 06:04:53
這篇文章是從2007年開始的。BLOBs肯定是支持的,並且至少有1.6(API等級4,又名Donut)。 OP指出,問題在於BLOB值超過1MB。 – 2012-07-18 04:25:56
每個操作有1MB限制。 (我不確定這是每行還是每列在SQLite查詢的情況下)。這個限制是由於SQLite API與Binder/Parcel IPC系統上的out-of-process進程交互。相同的限制適用於Bundle中的值(例如,Intent extras)。
活頁夾事務緩衝器具有有限的固定大小,目前的1Mb, 其由所有交易在該過程進展共享。
參見:http://developer.android.com/reference/android/os/TransactionTooLargeException.html
1 MB的限制是光標窗口的最大尺寸。這是用於存儲IPC傳輸結果行的內存緩衝區。窗口大小動態增長到這個限制。 – WindRider 2013-10-14 15:43:11
讀一個BLOB小於100KB從SQLite數據庫比從文件系統中讀取相同的速度。然而,任何比這更大的東西最好保存在磁盤上,並在db中引用。 更多於:http://www.sqlite.org/intern-v-extern-blob.html
感謝您的參考。 – 2013-10-04 09:07:42
@frederick nyawaya:什麼是最好的?將圖像/音頻作爲Blob存儲在數據庫中或僅存儲文件系統的路徑? – Ajay 2014-03-25 12:24:50
@Ajay作爲文件系統的一部分 – 2014-03-29 09:39:49
- 1. android sqlite數據庫光標
- 2. Android上的SQLite數據庫有大小限制嗎?
- 3. SQLite數據庫的Android光標/鎖
- 4. 限制數據庫大小
- 5. 在Android SQLite數據庫中刪除第一項後光標大小爲零
- 6. sqlite數據庫光標
- 7. 的Android如何查詢的Android龐大的數據庫(光標大小限制爲1MB)
- 8. 是否對SQLite數據庫的大小有限制?
- 9. 如何有效地檢查/限制sqlite數據庫的大小?
- 10. 如何將SQLite數據庫的大小限制增加到140TB?
- 11. Grails的限制數據庫列大小
- 12. 限制SQLite數據庫中的行數
- 13. SSIS中的Access數據庫目標是否有大小限制?
- 14. Android應用程序中的最大SQLite數據庫大小
- 15. Sqlite字段大小限制
- 16. Android:與光標在SQLite數據庫中的錯誤
- 17. 更改窗口中鼠標光標的限制大小7
- 18. 如何使用光標從數據庫檢索數據? (Android,SQLite)
- 19. android intents行內數據大小限制
- 20. Android sqlite,限制數據庫中的行數
- 21. MySQL轉儲限制? MySQL的整體數據庫大小限制?
- 22. 在SQLite中查詢數據庫大小
- 23. 數據庫觸發器限制Postgres中的最大表大小
- 24. SQLite數據庫大小太大
- 25. android - 光標限制照片
- 26. PHAdjustment數據大小限制
- 27. Json數據大小限制
- 28. 光標android中的二進制數據
- 29. Android中SQLite數據庫的大小應該是什麼
- 30. Android Firebase數據庫存儲大小限制
通常,您應該避免SQLite中的斑點,因爲它們表現不佳;而是將blob數據保存爲文件並將文件的位置存儲在數據庫中。 --->非常感謝.. – 2011-05-18 04:50:18
AndroidKid是正確的。我相信存在一個BLOB的用例,但是,我想不出一個。 :) – Jonathan 2011-05-19 06:02:55