java – ContentResolver和“where”语句中的“IN”语句
发布时间:2020-12-15 04:20:22 所属栏目:Java 来源:网络整理
导读:我正在尝试根据therir ID获取联系人列表的光标.我不确定如何使用带有参数数组的“IN”语句.我目前有什么导致错误. public Cursor GetContacts(String[] ids){ ContentResolver cr = getContentResolver(); try { Uri uri = ContactsContract.Contacts.CONTEN
我正在尝试根据therir ID获取联系人列表的光标.我不确定如何使用带有参数数组的“IN”语句.我目前有什么导致错误.
public Cursor GetContacts(String[] ids) { ContentResolver cr = getContentResolver(); try { Uri uri = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER }; String where = ContactsContract.Contacts._ID + " IN ?"; String[] selectionArgs = ids; String sortOrder = ContactsContract.Contacts.DISPLAY_NAME; return cr.query(uri,projection,where,selectionArgs,sortOrder); } catch (Exception ex) { String message = ex.getMessage(); Log.e("mine","Error: " + message,ex); return null; } 错误:接近“?”:语法错误(代码1):,编译时:SELECT _id,display_name,has_phone_number FROM view_contacts WHERE((1))AND((_id IN?))ORDER BY display_name 解决方法
我没有测试这个,但我认为你需要将你的id压缩成一个逗号分隔的字符串,以便将它插入到你的查询中.
public Cursor GetContacts(String[] ids) { ContentResolver cr = getContentResolver(); try { Uri uri = ContactsContract.Contacts.CONTENT_URI; String[] projection = new String[] { ContactsContract.Contacts._ID,ContactsContract.Contacts.HAS_PHONE_NUMBER }; String where = ContactsContract.Contacts._ID + " IN (?)"; String[] selectionArgs = {StringUtils.join(ids,",")}; String sortOrder = ContactsContract.Contacts.DISPLAY_NAME; return cr.query(uri,ex); return null; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |