アドバイスをお願いします。次のようなクエリがある場合、データベースからデータを選択する効率的な方法は何ですか?SELECT * FROM order_list WHERE order_number = ?
テーブルには共通の注文番号を持つエントリがあり (私の場合)、同じ注文番号を持つエントリのリストを作成したいのですが、それからそれを撃ったListView
。List<Item>
最初にすべての注文番号を選択してから、 foreach ループでより良いものを選択して作成または存在させることが効率的かどうかはわかりません。いくつかの例を見つけようとしましたが、失敗しました。この問題を解決するにはどうすればよいですか? ありがとうございました。すべての助けに感謝します。
質問する
1520 次
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};
}
そしてあなたのActivityクラスで:
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
結果セットを 1 つ以上の列でグループ化します。あなたの場合、あなたに基づいてレコードをorder number
グループ化します。グループ化した後、リストビューまたは必要なものに割り当てることができます。
于 2013-01-10T09:35:21.910 に答える
0
私の理解が正しければ、次の方法がより効率的かどうかを知りたいと思います。
WHERE order_number = ?
句を使用してフィルタリングするすべてをロードしてから、ループでフィルタリングします。
その場合、1 の方がはるかに優れたソリューションであり、不要なオブジェクトの作成が大幅に回避されます。行数が多い場合は、列にインデックスを追加すると面白いかもしれませんorder_number
。
結果を で表示したい場合、 SimpleCursorAdapterを使用してをListview
に接続するのが最善の解決策です。必要なときにのみデータをロードする必要があるため、これは非常に効率的です。SQLiteCursor
ListView
ListView
于 2013-01-10T10:46:29.643 に答える