Java 如何从一个一次只返回一行的函数中获取SQLite中的每一行

Java 如何从一个一次只返回一行的函数中获取SQLite中的每一行,java,android,sqlite,Java,Android,Sqlite,我有一个包含N行的SQLiteDB,我需要通过知道DB中的行数来检索每一行,我尝试的是: public CategoriesItem returnCategory(int index){ SQLiteDatabase db = this.getWritableDatabase(); Cursor mRow= db.rawQuery("select * from " + TABLE_CATEGORY + " LIMIT 0, " + index, null);

我有一个包含N行的
SQLite
DB,我需要通过知道DB中的行数来检索每一行,我尝试的是:

public CategoriesItem returnCategory(int index){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor mRow= db.rawQuery("select * from " + TABLE_CATEGORY + " LIMIT 0, " + index, null);
        if (null!=mRow) {
            mRow.moveToNext();
            item.auto_id = Integer.toString(mRow.getInt(mRow.getColumnIndex(KEY_ID)));
            item.title = mRow.getString(mRow.getColumnIndex(KEY_CATEGORY_NAME));
            item.subTitle = mRow.getString(mRow.getColumnIndex(KEY_CATEGORY_DESCRIPTION));
        }

        return item;
    }
问题是它每次只返回第一行,即使索引不是1。
这个查询有什么问题?如何通过知道数据库中的行数来获取单行值?

您可能要做的是在
光标上迭代,然后可以使用每一行的数据。

这似乎可行,我会做一些测试,但这应该是解决方案:

Cursor mRow= db.rawQuery("select * from " + TABLE_CATEGORY + " LIMIT 1 OFFSET " + index, null);

您的SQL中没有WHERE。。。
“LIMIT 0,”+index
有什么作用?@cricket\u 007我只有数据库中的行数,然后我可以使用returnCategory函数N次以检索数据库中的每一行,但我不知道如何一行一行地检索。这不是你问题的答案,但我认为值得在这里添加—在完成操作时始终关闭
Cursor
。将您的代码包装在
try
-
catch
-
中,然后放置
mRow.close()
finally
块中。如果调用此函数N次,则将运行相同的查询N次,并且只检索最前面的结果。你需要移动光标
索引
次。@cricket\u 007我已经关闭了光标并编辑了查询,我使用了限制1和偏移索引,现在似乎可以工作了