我正在尝试使用 .query 而不是 .rawQuery 编写 SQL 数据库请求(我被告知它更有效,尽管并非每个人似乎都同意这一点......)。
如果我必须用 SQL 编写它,大概是这样的:
select COL_NAME, COL_COMMENTS, KEY_ROW_ID
from TABLE
where COL_CAT1 = myVariable1 or myVariable2 or ... myVariableN
or COL_CAT2 = myVariable1 or myVariable2 or .... myVariableN
or COL_CAT3 = myVariable1 or myVariable2 or.... myVariableN
我试过这个:
public Cursor findNameInTable(int myVariable1, int myVariable2, int myVariableN) {
String where = COL_CAT1 + " = ? OR " + COL_CAT2 + "=?";
String[] whereArgs = new String[] { Integer.toString(myVariable1), Integer.toString(myVariable2), Integer.toString(myVariableN)};
c = myDatabase
.query(DATABASE_TABLE, new String[] { KEY_ROWID, COL_NAME , COL_COMMENTS },
where,
whereArgs, null,
null, null);
return c;
}
问题在于系统正在这样做:
select .....
from .....
where COL_CAT1 = myVariable1
or COL_CAT2 = myVariable2
or ???? = myVariableN
然后它崩溃了,因为它希望将每个变量与一个新列进行比较,这不是我想要的:我有比列更多的输入变量。
它实际上是“=?” 这似乎不合适,但没有办法找到如何编写这种请求,大部分文档都是关于 rawQuery() 而不是 query()。提前致谢。