SQLite 从多个表中选择全部并从游标中读取
SQLite selecting all from multiple tables and reading from cursor
我有一个查询从不同的 tables
检索数据
select * from customer c, order o where c.id = o.pID
两个 table 都有一列 'date_created',我想从订单 table
中检索 date_created
我试过 Cursor c = db.execute(sql); String dateCreated = c.getString("date_created")
返回客户日期而不是订单日期。当我尝试 c.getString("o.date_created")
我的应用程序崩溃并且 returns “E/SQLiteCursor: 请求列名称 table 名称 -- o.date_created
java.lang.Exception
谁能指导我如何获得订单 date_created?
我
这个怎么样:
select *, c.date_created as customer_date_created, o.date_created as order_date_created from customer c, order o where c.id = o.pID
然后只需使用:
c.getString("order_date_created");
您可以使用别名来区分列名,如下所示:
select c.date_created as cust_date, o.date_created as order_date from customer c, order o where c.id = o.pID
然后尝试:
c.getString("order_date");
您的查询结果集包含 2 个同名列,因此当您尝试按名称 date_created
检索列时,您无法确定得到的是哪一个。
这就是为什么您必须为所有具有相同名称的列使用别名的原因:
select c.column1, c.column2, c.date_created as cust_date_created, .....
o.column1, o.column2, o.date_created as ord_date_created, ....
from customer c inner join [order] o
on c.id = o.pID
您可以在结果中省略不需要的列。
还要使用正确的连接语法。
现在您可以通过以下方式获取列的值:
String dateCreated = c.getString(c.getColumnIndex("ord_date_created"))
我有一个查询从不同的 tables
检索数据select * from customer c, order o where c.id = o.pID
两个 table 都有一列 'date_created',我想从订单 table
中检索 date_created我试过 Cursor c = db.execute(sql); String dateCreated = c.getString("date_created")
返回客户日期而不是订单日期。当我尝试 c.getString("o.date_created")
我的应用程序崩溃并且 returns “E/SQLiteCursor: 请求列名称 table 名称 -- o.date_created
java.lang.Exception
谁能指导我如何获得订单 date_created? 我
这个怎么样:
select *, c.date_created as customer_date_created, o.date_created as order_date_created from customer c, order o where c.id = o.pID
然后只需使用:
c.getString("order_date_created");
您可以使用别名来区分列名,如下所示:
select c.date_created as cust_date, o.date_created as order_date from customer c, order o where c.id = o.pID
然后尝试:
c.getString("order_date");
您的查询结果集包含 2 个同名列,因此当您尝试按名称 date_created
检索列时,您无法确定得到的是哪一个。
这就是为什么您必须为所有具有相同名称的列使用别名的原因:
select c.column1, c.column2, c.date_created as cust_date_created, .....
o.column1, o.column2, o.date_created as ord_date_created, ....
from customer c inner join [order] o
on c.id = o.pID
您可以在结果中省略不需要的列。
还要使用正确的连接语法。
现在您可以通过以下方式获取列的值:
String dateCreated = c.getString(c.getColumnIndex("ord_date_created"))