将游标适配器与多个表游标一起使用(内连接)

Posted

技术标签:

【中文标题】将游标适配器与多个表游标一起使用(内连接)【英文标题】:Using Cursor Adapter with multiple table cursor(inner join) 【发布时间】:2014-12-30 05:46:04 【问题描述】:

我需要两个表来进行搜索。我使用内部连接来获得这两个。但是这两个不同的表有一些相同的列名(我需要)。我如何区分这些列。

这就是我所做的。

  final String MY_QUERY = "SELECT * FROM Products p INNER JOIN Categories c ON p.CategoryID=c._id";                           Cursor cursor = db.rawQuery(MY_QUERY, null);

我在我的 CursorAdapter 中使用这个光标来设置我的列表视图单元格字段。

  prodName.setText(cursor.getString(cursor.getColumnIndex("Name")));
  prodCategory.setText(cursor.getString(cursor.getColumnIndex("Name")));

如您所见,这些假设来自不同表的不同值。但它们显示相同的值(名称),因为我的内部连接有 2 次此字段,我不知道如何将它们分开。

【问题讨论】:

【参考方案1】:

而不是* 命名您正在查询的列并使用别名,例如:

SELECT p.name as pname, c.name as cname, ...

然后

prodName.setText(cursor.getString(cursor.getColumnIndex("pname")));
prodCategory.setText(cursor.getString(cursor.getColumnIndex("cname")));

【讨论】:

以上是关于将游标适配器与多个表游标一起使用(内连接)的主要内容,如果未能解决你的问题,请参考以下文章

Android开始之 数据存储CursorAdapter游标适配器&Loader和AsyncLoader的使用

删除数据库行后刷新自定义游标适配器

ADO.NET两种读取数据库的方式

cursor 第一次为空,recyclerView 不显示游标数据

将 Dapper 与返回游标的 Oracle 存储过程一起使用

从 Sqlite 游标创建 Pojo 类花费了太多时间