我正在尝试在android浏览器内容提供程序上运行一个简单的查询。书签与历史记录项混合在一起,因此要获取书签,只需选择“ Browser.BookmarkColumns.BOOKMARK = 1”即可。使用
String mSelectionClause = Browser.BookmarkColumns.BOOKMARK + " = 1";
和
Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, null, mSelectionClause, null, null);
工作正常。但是我用占位符获得相同结果的所有尝试都失败了:
String mSelectionClause = Browser.BookmarkColumns.BOOKMARK + " = ?";
查询:
Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, null, mSelectionClause, mSelectinArgs, null);
在所有这些情况下,返回一个空的Cursor:
mSelectionArgs[0] = "1"
mSelectionArgs[0] = '1'
mSelectionArgs[0] = String.valueOf(1)
mSelectionArgs[0] = Integer.toString(1)
mSelectionArgs[0] = 1 + "" (idea picked up on this site)
我是在做错什么,还是应该放弃使用占位符的希望?
干杯。
Android数据库API是为字符串而不是整数设计的。有人说这是API设计中的错误。
无论如何,在您的示例中,String mSelectionClause = Browser.BookmarkColumns.BOOKMARK + " = 1";
您使用的是整数(= 1)。这是处理整数的最佳且唯一的方法。这样做也是安全的。如果要使用字符串,则第二种解决方案将是最安全的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句