Java Android从sqlite数据库获取多个项目
我喜欢在不使用for/while/dowhile循环的情况下更新(检索并可能编辑)SQLite数据库中的多个项目 是否可以使用光标进行此操作?我想限制表中的个人查找 是否有一些复杂的Android数据对象,我可以将SQL查询的所有结果转储到其中,然后对其进行循环解析 我听说过可打包的对象和可序列化的对象,但这正是我使用数据库的目的 我目前有方法按单个行调用元素。我可以将该方法放在for循环中,也可以将游标的查询放在for循环中,但我不想进行太多的访问Java Android从sqlite数据库获取多个项目,java,android,sql,sqlite,data-structures,Java,Android,Sql,Sqlite,Data Structures,我喜欢在不使用for/while/dowhile循环的情况下更新(检索并可能编辑)SQLite数据库中的多个项目 是否可以使用光标进行此操作?我想限制表中的个人查找 是否有一些复杂的Android数据对象,我可以将SQL查询的所有结果转储到其中,然后对其进行循环解析 我听说过可打包的对象和可序列化的对象,但这正是我使用数据库的目的 我目前有方法按单个行调用元素。我可以将该方法放在for循环中,也可以将游标的查询放在for循环中,但我不想进行太多的访问 public String fetchDay
public String fetchDay(long rowId) throws SQLException {
Cursor mCursor =
mapDb.query(true, DAY_TABLE, new String[] {KEY_ROWID, KEY_DAY}, KEY_ROWID + "=" + String.valueOf(rowId), null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
String result = mCursor.getString(mCursor.getColumnIndex(KEY_DAY));
mCursor.close();
return result;
}
如何获取该表的所有元素并将其存储在一个复杂对象中而不循环
您可以更改查询以返回多行,方法如下:
KEY_ROWID + " >= " + String.valueOf(firstRowId) + " AND " + KEY_ROWID + " <= " + String.valueOf(lastRowId)
结果是一个列表
请注意,此解决方案中使用的while循环比反复查询表要便宜得多,因为它在内存中的游标对象上进行迭代,而不是执行多个I/O操作“是否有一些复杂的Android数据对象,我可以将SQL查询的所有结果转储到其中,然后对其进行循环解析?”
是的,这就是。它表示数据库查询返回的结果集,类似于JDBC结果集。游标应该被视为数据库查询结果的容器,尽管我不确定它是否保存数据本身。
如果数据库查询返回多行,则将通过光标引用这些行。
为了得到更好的主意,你可以从中得到好处
无论哪种方式,您都必须使用某种循环在结果集中的每一行的光标上进行迭代。很好,我如何更新数据库中的多个项目呢?我面临着同样的困境。我可能会发布一个新问题,我会将其链接到您
mCursor.moveToFirst();
while (!mCursor.isAfterLast()) {
results.add(mCursor.getString(mCursor.getColumnIndex(KEY_DAY)));
mCursor.moveToNext();
}