Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从sqlite数据库获取多个项目_Java_Android_Sql_Sqlite_Data Structures - Fatal编程技术网

Java Android从sqlite数据库获取多个项目

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

我喜欢在不使用for/while/dowhile循环的情况下更新(检索并可能编辑)SQLite数据库中的多个项目

是否可以使用光标进行此操作?我想限制表中的个人查找

是否有一些复杂的Android数据对象,我可以将SQL查询的所有结果转储到其中,然后对其进行循环解析

我听说过可打包的对象和可序列化的对象,但这正是我使用数据库的目的

我目前有方法按单个行调用元素。我可以将该方法放在for循环中,也可以将游标的查询放在for循环中,但我不想进行太多的访问

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();  
}