Android:sqlite:cursor:getColumnIndex

我有一个相当复杂的查询(多个连接)规范化的SQLite数据库。 查询做一个SELECT *来启用一些自动的属性select逻辑(所以我不能消除“*”)

我遇到的问题是我的结果集包含具有相同属性名称的多个列。 例如,查询中每个表共有的一个属性是“_id”。 当我去调用"cursor.getColumnIndex("_id")" ,返回值始终是结果集列表列表中最后一个"_id"属性的索引(即不是我想要的)。 我很想能够使用我的SQL别名前缀像cursor.getColumnIndex("A._id")但是这是行不通的。

问题

看来cursor.getColumnIndex(AttributeName)返回最后一个“AttributeName”的索引。 任何人都可以确认吗? 另外,如何返回第一个属性的索引与“AttributeName”的任何build议? 或者更好的具有“AttributeName”的Xth属性?

Solutions Collecting From Web of "Android:sqlite:cursor:getColumnIndex"

你可以这样做:

 SELECT _id as myID, * FROM myTable 

这意味着_id字段将在结果中的每个表中出现两次,但两列中的一列将具有一个唯一的名称,这将使您能够find它。

不幸的是, 文档没有提到你需要做什么,所以我认为这是不能做的。

但是,你说

查询做一个SELECT *来启用一些自动的属性select逻辑(所以我不能消除“*”)

你所说的这个“自动属性select逻辑”是什么? 你为什么要这个?

奥德解决scheme是:

 "SELECT tableName.columnName FROM tableName" 

然后做同样的事情:

 cursor.getColumnIndex("tableName.columnName"); 

这是MS-Access所做的。 您可以创build一个查询,然后查看生成的SQL代码(只需从“查看”菜单并从查询分配窗口中select“SQL视图”即可)