【发布时间】:2015-02-27 21:45:31
【问题描述】:
我想编写一个查询,将名为 DIRECTION 的列中字符串值为“left”的所有行加起来。接下来我要返还这笔款项。
在我的代码片段中,假设数据和数据库已建立。
这是原型:
public int getSumLeft() {
String selectQuery = "SELECT COUNT( "+TableData.TableInfo.DIRECTION+" ) WHERE "+TableData.TableInfo.DIRECTION+" = left";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
int sum = cursor.getInt(0);
cursor.close();
return sum;
}
我已经尝试了几个查询,这似乎是我所需要的。我认为问题出在语句'int sum = cursor.getInt(0);'
我认为零参数会覆盖结果。当我删除零时,代码会中断。 getInt 是一个 SQLite 函数,用于访问数据库中的数据。我没有创建该功能。但我必须使用它或其他类似的功能。
另外,我是否需要在查询周围放置一个 while 循环来移动 COUNT 查询的光标?数据库对你来说不算数,因此不需要迭代?
还有其他方法可以计算字符串值为'left'的行数并且可以返回总和吗?
完整代码在这里:
数据库: https://github.com/Leoa/Accelerometer/tree/AccelerometerDEV/app/src/main/java/thedatabase
实现(参见 onCreate 函数中的按钮): https://github.com/Leoa/Accelerometer/blob/AccelerometerDEV/app/src/main/java/com/leobee/accelerometer/MainActivity.java
感谢您对此进行调查。
【问题讨论】: