Android:cursor.getCount上的致命异常

时间:2017-04-10 07:13:21

标签: android android-sqlite

从表中获取数据时,我收到SQLiteBlobTooBigException异常。

这是stacktrace:

 Caused by android.database.sqlite.SQLiteBlobTooBigException: string or blob too big (code 18)
   at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(SQLiteConnection.java)
   at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:968)
   at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:836)
   at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
   at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:143)
   at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)

1 个答案:

答案 0 :(得分:0)

我发现如何使用length()和substr()仅请求1MB(CursorWindow的最大值为2MB),也许它会help。另外,您可以将context.getContentResolver().query()与仅包含相关列的选择一起使用,这样就不会加载与其他(不必要)列相关的数据。