带有动态Where子句的Android rawquery

2024-03-16

我正在尝试在 Android 中执行 SQL 查询,如下所示:

SELECT * FROM Flashcards WHERE (category = 'Anatomy' OR category = 'Surgery') AND (difficulty = 'Easy' OR difficulty = 'Medium');

类别和难度的数量在运行时由用户选择确定。到目前为止,我已经尝试使用带有查询参数的原始查询,但我觉得在这种情况下我正在与框架作斗争:

String query = "SELECT * FROM Flashcards WHERE (?) AND (?) ORDER BY RANDOM() LIMIT 1";
    Cursor cursor = db.rawQuery(query, queryParameters);

我尝试传入的查询参数包括:

category = 'Anatomy' OR category = 'Surgery'

And:

category = Anatomy OR category = Surgery

查询一直没有返回结果。在外部对同一数据库执行相同的查询确实会返回结果。


Try:

String query = "SELECT * FROM Flashcards WHERE category = ? OR category = ? ORDER BY RANDOM() LIMIT 1";
Cursor cursor = db.rawQuery(query, queryParameters);

仅供参考,参数位置应该用 ? 来描述符号。

Update:

当您想要在运行时传递字段名称和值时,您可以构建格式化字符串,例如:

String query = "SELECT * FROM Flashcards WHERE %s AND %s ORDER BY RANDOM() LIMIT 1";
Cursor cursor = db.rawQuery(String.format(query, queryParameters));

你必须在哪里建造queryParameters价值观类似category = 'Anatomy' OR category = 'Surgery'正如你所提到的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有动态Where子句的Android rawquery 的相关文章

随机推荐