在Android 4.2 API 17上读取Sqlite游标carsh
我有一张有145行的桌子。当我试图获取它的所有数据时,在安卓 4.2
上崩溃了,但在安卓 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;
}
logcat:
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);
日志:
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 安卓.database.CursorWindow.nativeGetString(Native Method)
at 安卓.database.CursorWindow.getString(CursorWindow.java:434)
at 安卓.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at 安卓.database.DatabaseUtils.dumpCurrentRow(DatabaseUtils.java:562)
at 安卓.database.DatabaseUtils.dumpCursor(DatabaseUtils.java:499)
at 安卓.database.DatabaseUtils.dumpCursor(DatabaseUtils.java:482)
共 (0) 个答案