【发布时间】:2011-04-13 14:30:22
【问题描述】:
我的应用程序有用户将记录输入数据库。这些记录包含一个自动递增的 id、日期(作为 mm-dd-yyyy 格式的文本)、一个数量 (int) 和一些其他字段。
我正在尝试获取所有月份和每个月的总和。这样我就可以在我的应用中显示它们,例如:Dec 2010 - 90qty, Jan 2011 - 45qty...
我正在使用这个查询来做到这一点:
return mDb.query("record", new String[] {KEY_ROWID, "strftime('%m-%Y', date)", "sum(quantity)"}, null, null, "strftime('%m-%Y', date)", null, null);
我相信查询很好,但访问游标时出现异常。它说“日期”不是一列。如果我将 from[] 中的“日期”重命名为“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个空白行。
【问题讨论】:
-
你能发布你的 SqliteDatabaseHelper 代码吗?
-
你有没有想过这个问题?我现在也遇到了同样的问题。