使用rawQuery在Android上选择.. WHERE ... IN

问题描述 投票:2回答:1

我想用数组查询sqlite数据库

例:

我有以下情况:

String[] Group = new String[] {"001", "002", "003"}

检查我使用:

rawQuery ("Select * from Article Where group = '" + Group + "');

这是行不通的。我的问题是我可以采用哪种其他方式处理它?

android sqlite android-studio select
1个回答
2
投票

免责声明:在使用此答案之前,您需要确保您的阵列中的数据是安全的。如果没有,您将需要清理它以避免SQL注入。

我不确定rawQuery是否支持数组,我找不到任何例子。我会通过String操作自己构建查询。您需要运行String[]并使用以下格式构建列表:

expression IN ('value', 'value', ...);

引号,因为我们正在处理字符串

See SELECT IN doc here

所以我会这样做:

String[] group = new String[] { "001", "002", "003" };

StringBuilder sb = new StringBuilder();
for (String s : group) {
    sb.append("'").append(s).append("',");
}
sb.deleteCharAt(sb.length() - 1); // removes the last comma, we don't want it

String query  = "SELECT * FROM Article WHERE group IN (" + sb.toString() + ");";

System.out.print(query);

它输出

SELECT * FROM Article WHERE group IN ('001','002','003');

然后

rawQuery(query);
© www.soinside.com 2019 - 2024. All rights reserved.