我可以在Android内容提供商的sqlite选择中进行按位操作吗?
我创建了一个游标加载器来从数据库加载数据,但没有返回结果。返回光标的计数为零。
new CursorLoader(getActivity(), Person.PERSON_CONTENT_URI,
Person.FULL_PROJECTION,
"( " + Person.FLAG + " & 2 ) = ?",
new String[]{
String.valueOf(2)
},
Person.USER_NAME + " asc");
sqlite
支持按位选择操作。以下是在PC命令行中测试的示例。
$ sqlite3 test.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> create table person(name text, flag integer);
sqlite> insert into person values('a', 1), ('b', 2), ('c', 4), ('d', 8);
sqlite> select * from person where (flag & 4) == 4;
c|4
为什么Android中的实现不支持它?
如何在Android中的sqlite selection子句中执行按位操作?
答案 0 :(得分:0)
这是Android API的一个陷阱。
作为@Mike的评论,整数选择参数必须在where
字符串中引用,不能作为文本参数传递。
new CursorLoader(getActivity(), Person.PERSON_CONTENT_URI,
Person.FULL_PROJECTION,
"( " + Person.FLAG + " & 2 ) = 2",
null,
Person.USER_NAME + " asc");
谢谢,这可以节省我的一天。