【问题标题】:Empty cursor row when filtering with selection使用选择过滤时为空光标行
【发布时间】:2015-07-29 20:52:57
【问题描述】:

我对游标没有信心,并且在使用 WHERE 子句过滤游标时遇到了一些问题。

我在做什么:

ContentResolver contentResolver = context.getContentResolver();
    Uri uriConversation = Uri.parse("content://mms-sms/conversations/");

    String[] projection = new String[]{"*"};
    String selection = "address=" + phoneNumberForThread;

    Cursor cursor = contentResolver.query(uriConversation, projection, null, null, null);

执行此代码,光标会被填满并且可以完美运行。 但是,如果我将 null 选择参数与我的选择字符串交换为

Cursor cursor = contentResolver.query(uriConversation, projection, selection, null, null);

然后我得到一个空光标。我什至检查!phoneNumberForThread.isEmpty()

我认为我做错了什么,但我对光标还没有信心。 任何帮助将不胜感激。

【问题讨论】:

  • 这里只是猜测,但是如果地址是一个字符串,它不应该被'包围吗?喜欢:String selection = "address='" + phoneNumberForThread + "'";
  • 你应该在没有选择的情况下运行并将调试器放在光标上,这样你就可以检查你是否有“地址”字段以及它的“值”是什么。在您确定某些内容后,它必须再次返回至少 1 条记录测试并查看您遇到的语法问题
  • @danysz 正是我到目前为止所尝试的。我认为马库斯关于封闭可能是正确的。我会尽快对此进行测试并通知您。
  • @Marcus 你是对的。请写下您的评论作为答案,以便我将其标记为已接受!谢谢

标签: android where-clause android-cursor


【解决方案1】:

如果您的输入变量存储为 string 数据类型,则应使用 ' 将其括起来:

String selection = "address='" + phoneNumberForThread + "'";

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 2020-11-21
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多