Android:sqlite:cursor:getColumnIndex

时间:2011-10-31 21:27:55

标签: android sqlite cursor normalize

我在规范化的sqlite数据库上有一个相当复杂的查询(多个连接)。查询执行SELECT *以启用一些自动属性选择逻辑(因此我无法消除“*”)

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

问题

cursor.getColumnIndex(AttributeName)似乎返回最后一个“AttributeName”的索引。谁能证实这一点?另外,关于如何使用“AttributeName”返回第一个属性的索引的任何建议?或者更好的是具有“AttributeName”的Xth属性?

3 个答案:

答案 0 :(得分:8)

你可以这样做:

SELECT _id as myID, * FROM myTable

这意味着_id字段对于结果中的每个表都会出现两次,但两列中的一列将具有唯一的名称,以便您可以找到它。

答案 1 :(得分:0)

不幸的是documentation没有提到你需要做什么,所以我假设它无法完成。

但是,你说

  

查询执行SELECT *以启用某些自动属性选择   逻辑(所以我不能消除“*”)

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

答案 2 :(得分:-3)

奥得河解决方案是:

"SELECT tableName.columnName FROM tableName"

然后执行相同的操作:

cursor.getColumnIndex("tableName.columnName");

这就是MS-Access的功能。您可以创建一个查询,然后查看生成的SQL代码(只需转到“查看”菜单并从查询dessign窗口中选择“SQL视图”)