Android:从SQLite数据库中选择数据 - 建议

时间:2013-01-10 09:31:11

标签: android

请给我建议,如果我有SELECT * FROM order_list WHERE order_number = ?这样的查询,从数据库中选择数据的有效方法是什么?在表格中我有更多的条目(在我的例子中)有共同的订单号,我想创建列出具有相同订单号的条目,然后在ListView中将其拍摄。我不知道它是否有效率首先选择所有订单号然后在foreach循环中选择并创建List<Item>或存在更好的东西。我试过找一些例子,但没有成功。我该如何解决这个问题?谢谢。我感谢你的每一个帮助。

3 个答案:

答案 0 :(得分:1)

您可以使用与您想法相同的内容:

"select col1,col2,col3 from table   WHERE order_number = ? ", new String[]{YOUR_VARIABLE_HERE};

例如:

 public Object[] getData(String Id) {
    Cursor c = null;
    ArrayList<String> arrayListProductName = new ArrayList<String>();
    ArrayList<String> arrayListProductId = new ArrayList<String>();
    db=helper.getWritableDatabase();
    c = db.rawQuery("select distinct  Column1,Column2 from Table1inner join Table2 on Table1.anyId = Table2.anyId  Table2.Id = ?", new String[]{Id});   
    c.moveToFirst();
    while(!c.isAfterLast())
    {
        arrayListProductName.add(c.getString(c.getColumnIndex("Column1")));
        arrayListProductId.add(c.getString(c.getColumnIndex("Column2 ")));
        c.moveToNext();
    }
    c.close();
    db.close();
    return new Object[]{arrayListProductName,arrayListProductId};
    }

在您的Activity类中:

helper = new YourDatabaseHelper(this);

Object[] objectScheme = merchandisingHelper.getData(retId);
arrayListSchemeProductName = (ArrayList<String>) objectScheme[0];
arrayListSchemeProductId = (ArrayList<String>) objectScheme[1];

希望这会对你有所帮助。

由于

答案 1 :(得分:0)

GROUPBY

中使用SQL
SELECT *
FROM table_name
WHERE column_name = yourvalue
GROUP BY your_columnname

GROUP BY与聚合函数结合使用,可以按一列或多列对结果集进行分组。在您的情况下,它会根据您的order number对记录进行分组。分组后,您可以分配到列表视图或任何您想要的内容。

答案 2 :(得分:0)

如果我理解正确,你想知道它是否更有效:

  1. 使用WHERE order_number = ?子句

  2. 进行过滤
  3. 加载所有内容,然后循环过滤。

  4. 然后1是一个更好的解决方案,它将避免大量不必要的对象创建。如果您有很多行,那么在order_number列上添加索引可能会很有趣。

    如果您想在Listview中显示结果,最佳解决方案是使用SimpleCursorAdapterSQLiteCursorListView相关联。 这非常有效,因为您只需在ListView需要时加载数据。