首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ContentResolver 查詢聯系人:CONTACT_ID 是列(字段)而非行,WHERE 條件用於篩選行

     編輯:程式設計綜合問答

ContactsContract.Contacts._ID(即 CONTACT_ID)是數據表中的列(字段),存儲聯系人唯一標識。查詢時第三個參數 selection 是 SQL WHERE 子句,用於篩選行,如 CONTACT_ID = 123 表示「選取 CONTACT_ID 列值等於 123 的行」。

代碼解析

// 1. 查詢聯系人表,獲取 _ID 列
Cursor cursor = resolver.query(Contacts.CONTENT_URI, null, null, null, null);
String contactId = cursor.getString(cursor.getColumnIndex(Contacts._ID)); // 讀取 _ID 列的值

// 2. 查詢電話表,WHERE 條件篩選行
Cursor phones = resolver.query(
    Phone.CONTENT_URI, 
    null, 
    Phone.CONTACT_ID + " = " + contactId, // WHERE CONTACT_ID = '123',篩選行
    null, null);

表結構示意

<-- 行 <-- 行
_ID (列)DISPLAY_NAME (列)HAS_PHONE_NUMBER (列)
123張三1
456李四1
  • _ID 是列名。
  • WHERE _ID = 123 篩選出第一行。

電話表結構

<-- 屬於聯系人 123 的行 <-- 同一聯系人另一行
CONTACT_ID (列)NUMBER (列)TYPE (列)
123138000000002
123139000000001

理解「列是屬性,行是記錄」,SQL 查詢邏輯即清晰明了。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved