访问游标时发生java异常
我的应用程序让用户将记录输入数据库。这些记录包含一个自动递增的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”,日期)时,从记录中选择总和(数量);在adb shell中,它返回“:94”。。。数量存在(但适用于所有日期),但日期不存在
当我输入时,从记录中选择strftime(date),它返回所有的日期(在这个测试用例中为3)。当我输入时,从记录中选择strftime(“%m-%Y”,date),它返回3个空行
# 1 楼答案
我相信会发生以下情况。以下是您的查询(简化):
您不选择日期列;您可以选择一个将列作为参数的函数。在这种情况下,数据库会为resultset列指定一些任意名称,例如
如您所见,结果集中不存在日期列(就像错误所说的那样)
您需要尝试的是:
或
并使用“date”或“formatted_date”引用resultset列
附言
这可能是不同的问题。若所标识的日期存储为文本,那个么strftime()函数将不知道如何格式化它