【问题标题】:Correct build cursor query with selection args android sqlite使用选择参数 android sqlite 正确构建光标查询
【发布时间】:2014-11-20 15:47:24
【问题描述】:

尝试构建正确的查询以从 android 数据库中获取原始联系人。 有疑问:

 String select = new StringBuilder( ContactsContract.RawContacts.CONTACT_ID + " = ? " + QUERY_AND_VALUE + stringBuilderTypeLocalContactSelection.toString() ).toString();
 cursor = context.getContentResolver().query( ContactsContract.RawContacts.CONTENT_URI, columnSelection,select,new String[]{ String.valueOf( contactId ) }, null );

stringBuilderTypeLocalContactSelection 在哪里:

 private static final StringBuilder stringBuilderTypeLocalContactSelection = new StringBuilder( ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.anddroid.contacts.sim'" +
            QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.google' " + " AND " + ContactsContract.RawContacts.ACCOUNT_TYPE
            + " <> 'com.android.contacts.sim' " + QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'vnd.sec.contact.sim' "
            + QUERY_AND_VALUE + ContactsContract.RawContacts.ACCOUNT_TYPE + " <> 'com.viber.voip.account'" + QUERY_AND_VALUE + ContactsContract.RawContacts.DELETED + " = 0 " );

在此查询中尝试获取具有类型的原始联系人,这些类型在字符串生成器中未描述,但如果 ACCOUNT_TYPE 值为空,则游标不会从数据库中获取记录。当 ACCOUNT_TYPE = null 并且 cursor 也给我记录时,是否可以进行有效选择?

【问题讨论】:

    标签: android database cursor


    【解决方案1】:

    我遇到了同样的问题。我想获取不是“viber”和“whatsapp”的联系人,但光标没有记录空 ACCOUNT_TYPE。 我的决定是在选择中添加“OR”+ ContactsContract.RawContacts.ACCOUNT_TYPE +“IS NULL”,这解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多