gpt4 book ai didi

Android:SQLite - 查询 SelectionArgs 中的数组以及其他字符串值

转载 作者:太空狗 更新时间:2023-10-29 16:03:25 25 4
gpt4 key购买 nike

我有以下内容解析器查询代码:

String selection = Columns.NAME + "=? and " + Columns.AVAILABILITY + "=?";
String[] selectionArgs = { name, true };
Cursor c = getContentResolver().query(Columns.URI, null, selection, selectionArgs, null);

这段代码工作正常,因为我只有一个名字,但现在我有一组名字,只有当它们的可用性为真时,这些名字才会被添加到游标中。即,我的场景是我想将那些具有任何名称(存在于数组中)的行放在游标中,前提是它们的可用性为真。

我怎样才能做到这一点?

最佳答案

SQL 有 IN operator为此:

String selection = Columns.NAME + " IN (?,?,?) AND" +
Columns.Availability + " = ?";
String[] selectionArgs = { name[0], name[1], name[2], true };
...

如果数组大小未预先确定,则必须动态构造 selection 字符串和 selectionArgs 数组:

String selection = Columns.NAME + " IN (" + makePlaceholders(names.length) + ")" +
" AND " + Columns.Availability + " = ?";
String[] selectionArgs = new String[names.length + 1];
for (int i = 0; i < names.length; i++)
selectionArgs[i] = names[i];
selectionArgs[names.length] = true;
...

使用从 this answer 复制的函数 makePlaceholders :

String makePlaceholders(int len) {
StringBuilder sb = new StringBuilder(len * 2 - 1);
sb.append("?");
for (int i = 1; i < len; i++)
sb.append(",?");
return sb.toString();
}

关于Android:SQLite - 查询 SelectionArgs 中的数组以及其他字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com