有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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) 个答案