android - 连接时的 SQLite 相同的列名
问题描述
在android studio上使用sqlite,我有两个相关的表“A”和“B”,它们都有一个“id”列。当我在 Android Studio 上加入并尝试从“id”获取值时,无论我是否输入,我都会得到“B.id”
cursor.getInt(cursor.getColumnIndex("A.id")); // or
cursor.getInt(cursor.getColumnIndex("id"));
我正在考虑更改列的名称,以便我可以轻松区分它们,但我已经看到 sqlite 没有任何简单的东西,如“Alter Table“A”rename column”,但我必须复制表使用正确的名称并删除旧名称,因此我试图避免使用此解决方案。
我认为还有一个解决方案是在查询中复制列,放置类似“Select A.id, * from ...”的内容,但这是我宁愿避免的。
知道为什么我发布的代码可能不起作用吗?谢谢
解决方案
在列上定义别名,可选择使用 选择所有其他列*
。这些不是相互排斥的,因此以下将起作用:
SELECT a.id AS a_id, b.id AS b_id, * FROM ...
它将返回别名列以及所有其他列,即使数据是冗余的:
Columns: a_id, b_id, id, ..., id, ...
坦率地说,你不能避免所有的解决方案。您已经列出的两个解决方案是您必须选择的所有解决方案。Sqlite 不会自动为列名添加表名前缀,因此真的没有其他选择。
推荐阅读
- c++ - 函数是否可以用较小的数组重写输入数组?
- cmake - 在 CMake 中使用来自 C/C++ 宏的值
- laravel - 获取用户的所有帖子
- windows - PyTorch 无法在我的 Windows PC 上通过 conda 安装
- python - 导入注册表作为节目列表中的选择,完成后关闭表格;当我再次返回打开表单时,在同一会话中没有响应
- python - 如何在计数不返回 0 的情况下进行计数控制循环?
- twilio - twilio 与 ZOHO CRM 集成的问题
- php - 控制台中显示的数据表操作列的引导模式内容
- c# - `foreach(var w in S.Split())` 是否存在任何可能的性能问题?
- ajax - 如何使用华为e5573cs api发送ussd