我不知道我的代码有什么问题请在这里帮助我
db = this.getReadableDatabase();
String query = "SELECT SUM(" +COLUMN_AMOUNT+ ") FROM "+TABLE_NAME+";";
Cursor cursor = db.rawQuery(query, null);
double monthlyTotal = 0.110;
if(cursor.moveToFirst())
{
monthlyTotal = cursor.getDouble(0);// get final total
}
else
monthlyTotal = 0.110;
我总是得到monthlyTotal = 0.0,即使我已将其初始化为0.110
请检查我的onCrete()代码是否正确
public void onCreate(SQLiteDatabase db) {
String CREATE_MONTHS_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INT, " + COLUMN_DATE + " TEXT, " + COLUMN_AMOUNT + " DOUBLE, " + COLUMN_REASON + " TEXT" + ");";
db.execSQL(CREATE_MONTHS_TABLE);
}
答案 0 :(得分:0)
当您在光标上调用getCount()
时,您将始终获得1
,因为SUM()
函数将始终返回结果,即使原始集为空:
sqlite> create table t(x);
sqlite> select sum(x) from t;
sum(x)
----------
(在这种情况下,SUM()
会返回NULL
,getDouble()
会转换为0.0
。)
此外,SUM()
将尝试从非数字计算总和:
sqlite> insert into t values('hello');
sqlite> select sum(x) from t;
sum(x)
----------
0.0
所以问题是表中的数据(或缺少它)。
要检查表中的行数,请使用不带SUM()
的查询;使用COUNT()
或queryNumEntries()。
答案 1 :(得分:-3)
使用字符串执行可能不是查询的最佳方式,因为它更容易出错,请尝试这样做: -
cursor = db.query(database.Tablename, new String[]{"SUM(" +
database.columname + ")"}, null, null, null, null, null);