Android内容提供商sqlite按位操作选择
我可以在Android内容提供商的sqlite选择中执行位操作吗 我创建了一个游标加载器来从数据库加载数据,但没有返回结果。返回光标的计数为零Android内容提供商sqlite按位操作选择,android,sqlite,Android,Sqlite,我可以在Android内容提供商的sqlite选择中执行位操作吗 我创建了一个游标加载器来从数据库加载数据,但没有返回结果。返回光标的计数为零 new CursorLoader(getActivity(), Person.PERSON_CONTENT_URI, Person.FULL_PROJECTION, "( " + Person.FLAG + " & 2 ) = ?", new String[]{
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子句中执行按位操作?这是Android API中的一个陷阱 正如@Mike的评论,整数选择参数必须在
中引用,其中字符串不能作为文本参数传递
new CursorLoader(getActivity(), Person.PERSON_CONTENT_URI,
Person.FULL_PROJECTION,
"( " + Person.FLAG + " & 2 ) = 2",
null,
Person.USER_NAME + " asc");
谢谢,这拯救了我的一天。这是Android API中的一个陷阱
正如@Mike的评论,整数选择参数必须在中引用,其中字符串不能作为文本参数传递
new CursorLoader(getActivity(), Person.PERSON_CONTENT_URI,
Person.FULL_PROJECTION,
"( " + Person.FLAG + " & 2 ) = 2",
null,
Person.USER_NAME + " asc");
谢谢,这节省了我的时间。您将等号的右操作数视为文本。为选择参数传递null
,并将选择中的?
替换为2
,您将等号的右侧操作数视为文本。为选择参数传递null
,并将选择中的?
替换为2