请给我建议,如果我有SELECT * FROM order_list WHERE order_number = ?
这样的查询,从数据库中选择数据的有效方法是什么?在表格中我有更多的条目(在我的例子中)有共同的订单号,我想创建列出具有相同订单号的条目,然后在ListView
中将其拍摄。我不知道它是否有效率首先选择所有订单号然后在foreach循环中选择并创建List<Item>
或存在更好的东西。我试过找一些例子,但没有成功。我该如何解决这个问题?谢谢。我感谢你的每一个帮助。
答案 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)
如果我理解正确,你想知道它是否更有效:
使用WHERE order_number = ?
子句
加载所有内容,然后循环过滤。
然后1是一个更好的解决方案,它将避免大量不必要的对象创建。如果您有很多行,那么在order_number
列上添加索引可能会很有趣。
如果您想在Listview
中显示结果,最佳解决方案是使用SimpleCursorAdapter将SQLiteCursor
与ListView
相关联。
这非常有效,因为您只需在ListView
需要时加载数据。