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 篩選出第一行。| CONTACT_ID (列) | NUMBER (列) | TYPE (列) |
|---|---|---|
| 123 | 13800000000 | 2 |
| 123 | 13900000000 | 1 |
理解「列是屬性,行是記錄」,SQL 查詢邏輯即清晰明了。