java - Android从sqlite数据库中获取多个项目

标签 java android sql sqlite data-structures

我想更新(检索并可能编辑)SQLite 数据库中的多个项目,而不使用 for/while/dowhile 循环

使用光标可以实现这一点吗?我想限制表中的个人查找

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

我听说过 Parceable 和可序列化对象,但这就是我使用数据库的目的。

我目前有方法可以按单独的行调用元素。我可以将该方法放入 for 循环中,或者我可以将 Cursor 的查询放入 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)

作为您的 where 子句。

这样做,游标将返回一系列行,然后您可以使用 while 循环对其进行迭代,如下所示:

mCursor.moveToFirst();  
while (!mCursor.isAfterLast()) {  
    results.add(mCursor.getString(mCursor.getColumnIndex(KEY_DAY)));  
    mCursor.moveToNext();  
}

结果为List<String>

请注意,此解决方案中使用的 while 循环比一遍又一遍地查询表要便宜得多,因为它在内存上的 Cursor 对象上进行迭代,而不是进行多次 I/O 操作

关于java - Android从sqlite数据库中获取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104302/

相关文章:

mysql - SQL查询: find lots that belong to current auction

php - 按数组大小查询 WordPress

Java:Java 中的 UDP 是否可能损坏数据

java - 如何在 MPAndroidChart 中获取 Horizo​​ntalBarChart 上点击栏的标签值?

android - 如何使用 AppCompat 库中的 VectorDrawableCompat?

android - 测试Android应用程序时要记住的要点

java - .MySQL 在 JDBC 准备语句中抛出错误?

java - 关于线程安全代码的问题

java - 如何在 JSP/Servlet 中获取用户角色

java - 在 main 方法之前执行静态 block