我有一张桌子145行。当我尝试获取所有数据时crashed on android 4.2
, BUT它工作得很好android 4.4 emulator
.
public ArrayList<QuestionInfoHolder> getAllArticle()
{
ArrayList<QuestionInfoHolder> result = new ArrayList<QuestionInfoHolder>();
SQLiteDatabase db = getReadableDatabase();
String query = "SELECT * FROM " + ARTICLE_TABLE_NAME + " ORDER BY "+ QUESTION_DATE +";";
Cursor cursor = db.rawQuery(query, null);
if(cursor != null)
{
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
{
result.add(new QuestionInfoHolder(cursor.getInt(0),
cursor.getInt(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4)));
}
}
return result;
}
日志猫:
Failed to read row 9, column 0 from a CursorWindow which has 9 rows, 5 columns.
FATAL EXCEPTION: main
java.lang.IllegalStateException: Couldn't read row 9, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
这表示光标只有 9 行,但如果我记录cursor.getCount();
它会显示145
.
我不知道出了什么问题。因此,任何帮助或建议将不胜感激。
更新1:
DatabaseUtils.dumpCursor(cursor);
log:
I/System.out: 99 {
E/CursorWindow: Failed to read row 9, column 0 from a CursorWindow which has 9 rows, 5 columns.
D/AndroidRuntime: Shutting down VM
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41b5e9a8)
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Couldn't read row 9, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:434)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at android.database.DatabaseUtils.dumpCurrentRow(DatabaseUtils.java:562)
at android.database.DatabaseUtils.dumpCursor(DatabaseUtils.java:499)
at android.database.DatabaseUtils.dumpCursor(DatabaseUtils.java:482)