在一个表上我不喜欢这样写道:如何从2个表查询一个(简单)的CursorAdapter
public static String[] FROM_Benzinarii_onList = {DBConstants.Denumire_Benzinarie, DBConstants.Adresa, DBConstants.Distance, _ID};
public Cursor getStations_List(){
db = helper.getReadableDatabase();
return db.query(DBConstants.TABELA_BENZINARII, FROM_Benzinarii_onList, null, null, null, null, null);
进而构建适配器:
int[] values = {R.id.tv_benzinarie,R.id.tv_adresa,R.id.tv_dist}
Cursor cursor = getStations_List();
SimpleCursorAdapter adapter = new SimpleCursorAdapter(getBaseContext(), R.layout.item_list, cursor,FROM_Benzinarii_onList, values);
setListAdapter(adapter);
但现在我需要一个额外的从另一个表中选择价格,我无法获得游标。我尝试了下面的代码和其他许多代码。
public static String[] FROM_Benzinarii_onList = {DBConstants.Denumire_Benzinarie, DBConstants.Adresa, DBConstants.Distance, DBConstants.Pret, _ID};
public Cursor getStations_List(){
db = helper.getReadableDatabase();
String sql = " select " + DBConstants.TABELA_BENZINARII + "." + DBConstants.Denumire_Benzinarie + "," + DBConstants.TABELA_BENZINARII + "." + DBConstants.Adresa
+ "," + DBConstants.TABELA_BENZINARII + "." + DBConstants.Distance + "," + DBConstants.TABELA_PRETURI + "." + DBConstants.Pret
+ " from " + DBConstants.TABELA_PRETURI + "," + DBConstants.TABELA_BENZINARII
+ " where " + DBConstants.TABELA_BENZINARII + "." + DBConstants.ID_Benzinarie + " = " + DBConstants.TABELA_PRETURI + "." + DBConstants.ID_Benz;
return db.rawQuery(sql, null);
}
进而构建SimpleAdapter以同样的方式(!?我不知道这是否是正确的)
int[] values = {R.id.tv_benzinarie,R.id.tv_adresa,R.id.tv_dist,R.id.tv_pret};
Cursor cursor = getStations_List();
SimpleCursorAdapter adapter = new SimpleCursorAdapter(getBaseContext(), R.layout.item_list, cursor,FROM_Benzinarii_onList, values);
setListAdapter(adapter);
我得到:
Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
我不知道如果我的新光标与FROM_Benzinarii_onList
有任何关系,但我不能在这里使用db.query
请帮忙!
好的,但我该怎么做呢?我在结果字符串数组中指定了它,但它似乎与游标无关 – AlexAndro 2012-04-20 15:07:05
在您的String []中,有一个名为_id的元素。它必须出现在游标中。因此,它必须存在于SELECT中。 – njzk2 2012-04-20 15:11:57