【问题标题】:How do i get data from an SQLITE database to an array in android?如何从 SQLITE 数据库获取数据到 android 中的数组?
【发布时间】:2011-01-30 11:01:30
【问题描述】:

很确定这是一个简单的方法,但我对所有将从游标返回的数据调整到不同视图的示例感到困惑。 我只想运行一个 rawquery 并将返回的每个数据项放入一个浮点数组中(以便我以后可以将它们相加)。我需要为此使用什么? 谢谢

【问题讨论】:

  • 您是否忘记初始化budgetInArray(大概您想在“numRows =incomeCursor.getCount()”行之后执行该操作)?
  • 是的,这正是问题所在,我自己刚到那里-_-也感谢您指出:)

标签: android database arrays sqlite cursor


【解决方案1】:

当您查询数据库时,您仍然会有一个游标,但是一旦您获得了游标,您就可以对其进行迭代,将您需要的值提取到一个数组中,如下所示:

DbAdapter db = new DbAdapter(mContext);
    int columnIndex = 3; // Whichever column your float is in.
    db.open();
    Cursor cursor = db.getAllMyFloats();
    float[] myFloats = new float[cursor.getCount()-1];

    if (cursor.moveToFirst())
    {                       
        for (int i = 0; i < cursor.getCount(); i++)
        {
            myFloats[i] = cursor.getFloat(columnIndex);
            cursor.moveToNext();
        }           
    }
    cursor.close();
    db.close();

    // Do what you want with myFloats[].

【讨论】:

  • 啊啊啊太邪恶了,非常感谢!我唯一不明白的是需要使用 columnIndex 吗?我想我会找出如果我调查的方法。我假设实际的 rawQuery 是在 getAllMyFloats 中完成的,对吗?干杯这真的很有帮助。
  • 哦还有另一件事,列的索引是从 0 还是 1 开始?
  • 如果您有一个包含多个列的表,那么您将需要列索引来获取您要查找的特定数据字段。列是零索引的。
【解决方案2】:

float[] myFloats = new float[cursor.getCount()-1];中不要减1,因为(int i =0)或者i从0开始。如果使用的话,会出现Java.lang.IndexOutOfBoundsException。您需要数组索引直到[cursor.getCount()],而不是直到[cursor.getCount()-1]。所以正确的是float[] myFloats = new float[cursor.getCount()];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2012-02-18
    • 2016-05-08
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多