gpt4 book ai didi

java - 访问游标时出现异常

转载 作者:行者123 更新时间:2023-11-30 04:42:45 27 4
gpt4 key购买 nike

我的应用程序让用户将记录输入数据库。这些记录包含一个自动递增的 ID、日期(作为 mm-dd-yyyy 格式的文本)、一个数量 (int) 和一些其他字段。

我正在尝试获取所有月份和每个月的总数量。这样我就可以在我的应用程序中显示它们,例如:2010 年 12 月 - 90 数量,2011 年 1 月 - 45 数量......

我正在使用这个查询来做到这一点:

return mDb.query("record", new String[] {KEY_ROWID, "strftime('%m-%Y', date)", "sum(quantity)"}, null, null, "strftime('%m-%Y', date)", null, null);

我相信查询很好,但在访问游标时出现异常。它说“日期”不是一列。如果我将 from[] 中的“date”重命名为“dateA”,则异常显示“dateA”不是列,因此我相信这会缩小问题范围。

Cursor c = mDbHelper.fetchReport();
String[] from = new String[] { "date", "quantity" };
int[] to = new int[] { R.id.text1, R.id.text2 };

setListAdapter(new SimpleCursorAdapter(this, R.layout.basicrow, c, from, to) {
}

有什么想法吗?

更新:执行时select strftime('%m-%Y', date), sum(quantity) from record;在 adb shell 中,它返回“:94”...数量在那里(但是对于所有日期)但日期不是。

当我输入时,从记录中选择 strftime(date),它返回所有日期(在此测试用例中为 3)。当我输入时,从记录中选择 strftime('%m-%Y', date),它返回 3 个空白行。

最佳答案

我相信会发生以下情况。这是您的查询(已简化):

select strftime('%m-%Y', date) from record

没有选择日期列;您选择一个将列作为参数的函数。在这种情况下,数据库会为结果集列分配一些任意名称,例如

STRFTIME_
05-2005
08-2009

如您所见,结果集中不存在日期列(正如错误所说)。

您需要尝试的是:

select strftime('%m-%Y', date) as date from record

select strftime('%m-%Y', date) as formatted_date from record

并使用“日期”或“格式化日期”来引用结果集列。

附言

select strftime('%m-%Y', date) from record, it returns 3 blank rows

这可能是另一个问题。如果日期 indded 存储为文本,则 strftime() 函数将不知道如何格式化它。

关于java - 访问游标时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com