Android:从SQLite数据库中选择数据-建议
请给我一些建议,如果我有类似于Android:从SQLite数据库中选择数据-建议,android,Android,请给我一些建议,如果我有类似于select*from order\u list,其中order\u number=?的查询,那么从数据库中选择数据的有效方法是什么?在表中,我有更多具有公共订单号的条目(在我的例子中),我想为具有相同订单号的条目创建列表,然后在ListView中进行拍摄。我不知道首先选择所有订单号,然后在foreach循环中选择并创建列表是否有效,或者是否存在更好的方法。我试着找一些例子,但没有成功。我应该如何解决这个问题?非常感谢。非常感谢您的帮助。在SQL中使用GROUPBY
select*from order\u list,其中order\u number=?
的查询,那么从数据库中选择数据的有效方法是什么?在表中,我有更多具有公共订单号的条目(在我的例子中),我想为具有相同订单号的条目创建列表,然后在ListView
中进行拍摄。我不知道首先选择所有订单号,然后在foreach循环中选择并创建列表
是否有效,或者是否存在更好的方法。我试着找一些例子,但没有成功。我应该如何解决这个问题?非常感谢。非常感谢您的帮助。在SQL
中使用GROUPBY
SELECT *
FROM table_name
WHERE column_name = yourvalue
GROUP BY your_columnname
groupby
与聚合函数一起使用,将结果集按一列或多列进行分组。在您的情况下,它将根据您的订单号对您的记录进行分组。分组后,您可以分配给列表视图或任何您想要的内容。您可以使用您这样想的内容:
"select col1,col2,col3 from table WHERE order_number = ? ", new String[]{YOUR_VARIABLE_HERE};
helper = new YourDatabaseHelper(this);
Object[] objectScheme = merchandisingHelper.getData(retId);
arrayListSchemeProductName = (ArrayList<String>) objectScheme[0];
arrayListSchemeProductId = (ArrayList<String>) objectScheme[1];
例如:
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};
}
public对象[]获取数据(字符串Id){
光标c=null;
ArrayList arrayListProductName=新的ArrayList();
ArrayList arrayListProductId=新的ArrayList();
db=helper.getWritableDatabase();
c=db.rawQuery(“从Table1中选择distinct Column1,Column2在Table1.anyId=Table2.anyId Table2.Id=?”,新字符串[]{Id});
c、 moveToFirst();
而(!c.isAfterLast())
{
add(c.getString(c.getColumnIndex(“Column1”));
add(c.getString(c.getColumnIndex(“Column2”));
c、 moveToNext();
}
c、 close();
db.close();
返回新对象[]{arrayListProductName,arrayListProductId};
}
在活动课上:
"select col1,col2,col3 from table WHERE order_number = ? ", new String[]{YOUR_VARIABLE_HERE};
helper = new YourDatabaseHelper(this);
Object[] objectScheme = merchandisingHelper.getData(retId);
arrayListSchemeProductName = (ArrayList<String>) objectScheme[0];
arrayListSchemeProductId = (ArrayList<String>) objectScheme[1];
helper=newyourdatabasehelper(这个);
Object[]objectScheme=merchandisingHelper.getData(retId);
arrayListSchemeProductName=(ArrayList)objectScheme[0];
arrayListSchemeProductId=(ArrayList)objectScheme[1];
希望这对你有帮助
谢谢如果我理解正确,您想知道:
使用WHERE order\u number=?
子句进行筛选
加载所有内容,然后在循环中过滤
那么1是一个更好的解决方案,它将避免大量不必要的对象创建。如果您有很多行,在订单号
列上添加索引可能会很有趣
如果要在列表视图
中显示结果,最好的解决方案是使用。
这非常有效,因为您只需在列表视图需要数据时加载数据。查询中的SelectionAgs只能包含一个参数?我的意思是如果我想在同一时间选择订单号为1,2,…,n的项目?是否可以在新字符串[]{someArray[]}的地方做某事是的,您可以有多个参数。请参见其中的id1=?和id2=?id3=?,新字符串[]{ID1_VAL,ID2_VAL,id3_VAL,}你只需要处理第一个?值应位于新字符串[]{first_ARGS}的第一位。