5

我的问题是我必须写这个

select * from contacts where id in (select cpk from mapping where gpk = 'MY-VARIABLE-HERE')

在 Android 中查询,但运行时失败。
当我使用静态变量运行它时,它可以工作并提供数据,但是当我尝试使用选择参数时它会失败。

到目前为止,我已经尝试过这些:

1) Cursor cursor = myDataBase.rawQuery("select * from contacts where id in (select cpk from mapping where gpk = "+"'"+"?"+"'"+")", new String[]{grpName});

2) Cursor cursor = myDataBase.query(TABLE_CONTACTS, null, "id in", new String[]{"(select cpk from mapping where gpk = '"+grpName+"')"}, null, null, null);

3) Cursor cursor = myDataBase.rawQuery("select * from contacts where id in (select cpk from mapping where gpk = ?)", new String[]{grpName});

请帮助我...提前谢谢...

4

3 回答 3

11

我解决了这个问题,我传递了错误的变量值。

Cursor cursor = myDataBase.rawQuery("select * from contacts where id in (select cpk from mapping where gpk = ?)", new String[]{grpName});

工作正常。

谢谢大家的帮助.. :)

于 2013-09-20T11:46:51.917 回答
0

在 where 子句中执行此操作

“gpk = ?”

并在值数组中传递值,例如

new String[] {gpk_value}
于 2013-09-20T09:22:58.460 回答
0

你可以这样做:

String query="SELECT * FROM contacts WHERE id IN (SELECT cpk FROM mapping WHERE gpk = '"+grpName+"')";
Cursor cursor = myDataBase.rawQuery(query, null);
于 2013-09-20T09:31:31.170 回答