我正在使用Content Provider for DB开展项目 我可以使用下面提到的查询来获取所有行 我的问题是我想为所有提取的行总结一列。
我在查询:
String query = WorkTable.ENTRY_TIME + " = ?"
String projection = "new String[]{WorkoutLogTable.STEPS}";
Cursor cursor = getContentResolver()
.query(
LogProvider.WORK_LOG,
projection,
query,
new String[]{dateString},
null
);
我想要WorkoutLogTable.STEPS
的总和。投影需要string[]
作为参数,那么如何总结STEPS值?
修改
我使用了投影:
String projection = new String[]{"sum(WorkoutLogTable.STEPS}) as total"};
但它也没有用。
解决方案:
我把整个部分都作为字符串做错了 所以我已经解决了这个问题:
String projection = new String[]{"sum(steps) as total"}; // steps is my column name and I was fetching it by WorkoutLogTable.STEPS which was wrong
或者其他解决方案可以使用动态字符串(来自cricket_007
回答)
答案 0 :(得分:2)
投影需要
string[]
作为参数,
是的,那么为什么projection
变量为String
?这个陈述甚至都不会编译。
String projection = "new String[]{"sum(WorkoutLogTable.STEPS}) as total"};
也许你是这个意思?
String[] projection = new String[] { "sum(" + WorkoutLogTable.STEPS + ") as total" };
您需要使用实际的String[]
对象,而不是String
,其内容为"String[] { ... }"
String selection = WorkTable.ENTRY_TIME + " = ?"
String[] projection = new String[] { "sum(" + WorkoutLogTable.STEPS + ")" };
String[] selectionArgs = new String[] { dateString };
Cursor cur = getContentResolver().query(
LogProvider.WORK_LOG,
projection,
selection,
null, null);
答案 1 :(得分:0)
这是来自其他应用的内容提供商吗?如果您正在编写内容提供程序,我建议您专门为摘要查询添加另一个URL,并在内容提供程序内的查询中执行sum函数。然后在浏览内容解析器时使用备用URL。