0

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

4

3 回答 3

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

在您的活动课程中:

helper = new YourDatabaseHelper(this);

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

希望这会帮助你。

谢谢

于 2013-01-10T09:46:25.967 回答
0

用于GROUPBY_SQL

SELECT *
FROM table_name
WHERE column_name = yourvalue
GROUP BY your_columnname

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

于 2013-01-10T09:35:21.910 回答
0

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

  1. 使用WHERE order_number = ?子句过滤

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

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

If you want to show the result in a Listview the best solution is to connect the SQLiteCursor to the ListView, using a SimpleCursorAdapter. This is very efficient because you only have to load data when the ListView needs it.

于 2013-01-10T10:46:29.643 回答