使用典型的列和連接表並在創建遊標時選擇所有列將導致包含多個_id列的遊標。當有多個來自聯接的_id列時,如何訪問各個_id列?
要訪問特定的_id列將需要使用實際的偏移量,而不是列名稱。
使用硬編碼偏移可能會產生問題,它會使代碼更難讀取並因此難以維護。
例如兩個表商店和過道按照
表商店具有列
- _id
- SHOPNAME
過道中的列
- _id
- aisleshoplink
- aislename
那麼你可能想獲取包含過道和相關店鋪的光標(aisleshoplink持有_id)。使用SELECT * FROM aisles LEFT JOIN shops ON aisleshoplink = shops._id
將導致具有列
- 光標
_id(過道的_id偏移= 0)
- aisleshoplink(值將是各店鋪的_id,偏移= 1)
- aislename(offset = 2)
- _id(店鋪的_id,應該匹配aisleshoplink,偏移= 3)
- SHOPNAME(偏移量= 4)
所得光標無關區分比另一個_id列抵消。你不能像在SQL中那樣用表名前綴它。
即cursor.getLong(_id)
是不明確的(從有限的測試中出現返回最後一個_id)。
cursor.getLong("aisles._id")
失敗,發出E/SQLiteCursor: requesting column name with table name -- aisles._id
(結果也不一致,有時只有1個失敗會顯示,有時會顯示所有失敗)。
那麼我們應該如何適當_id從遊標檢索出來,而不必訴諸使用偏移?