使用典型的列和连接表并在创建游标时选择所有列将导致包含多个_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从游标检索出来,而不必诉诸使用偏移?