我在规范化的sqlite数据库上有一个相当复杂的查询(多个连接)。查询执行SELECT *以启用一些自动属性选择逻辑(因此我无法消除“*”)
我遇到的问题是我的结果集包含多个具有相同属性名称的列。例如,查询中每个表共有的一个属性是“_id”。当我去调用"cursor.getColumnIndex("_id")"
时,返回的值始终是结果集列列表中最后一个"_id"
属性的索引(即不是我想要的那个)。我希望能够使用我的SQL别名前缀,如cursor.getColumnIndex("A._id")
,但这不起作用。
问题
cursor.getColumnIndex(AttributeName)
似乎返回最后一个“AttributeName”的索引。谁能证实这一点?另外,关于如何使用“AttributeName”返回第一个属性的索引的任何建议?或者更好的是具有“AttributeName”的Xth属性?
答案 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视图”)