SELECT .. WHERE ... IN 在 Android 上使用 rawQuery

Posted

技术标签:

【中文标题】SELECT .. WHERE ... IN 在 Android 上使用 rawQuery【英文标题】:SELECT .. WHERE ... IN on Android using rawQuery 【发布时间】:2018-08-14 10:39:27 【问题描述】:

我想用数组查询sqlite数据库

示例:

我有以下情况:

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

检查我是否使用:

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

它不起作用。我的问题是我可以通过哪些其他方式来处理它?

【问题讨论】:

是“AND”还是“OR”查询? 【参考方案1】:

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

我不确定rawQuery 是否支持数组,我找不到任何示例。 我会通过字符串操作自己构建查询。您需要遍历您的 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);

【讨论】:

以上是关于SELECT .. WHERE ... IN 在 Android 上使用 rawQuery的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQLdb 执行“SELECT ... WHERE ... IN ...”

哪个更快,select * from table where id=a

MySQL Select 语句,WHERE 'IN' 子句

sqlserver where in 在 mysql

Where() in (select) H2

5.where_in_在指定的字段里面