Android内容解析器查询占位符整数

我正在尝试在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设计中的错误.

无论如何,在您的示例字符串mSelectionClause = Browser.BookmarkColumns.BOOKMARK“ = 1”;您使用的是整数(= 1).这是处理整数的最佳且唯一的方法.这样做也是安全的.如果要使用字符串,则第二种解决方案将是最安全的.

上一篇:JavaScript-停止点击取消选择的文本


下一篇:java-禁用JList单元格选择属性