Java 如何从一个一次只返回一行的函数中获取SQLite中的每一行
我有一个包含N行的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);
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和偏移索引,现在似乎可以工作了