1 回答
TA贡献1906条经验 获得超3个赞
删除表名称周围的单引号:
Cursor cursor = database.rawQuery("select * from " + PRODUCTS +";", null);
需要单引号来包裹字符串文字。
还要用 while 循环替换 for 循环(上限错误):
private void getTotal() {
int m=0;
Cursor cursor = db.gettotal();
if (cursor.getCount() == 0) {
Toast.makeText(getApplicationContext(),"No message is available", Toast.LENGTH_LONG).show();
} else {
while (cursor.moveToNext()) {
m += cursor.getInt(cursor.getColumnIndex("amount"));
}
total_amount.setText("" + m);
}
}
我更换了:
String.valueOf(cursor.getColumnIndex("amount"))
它返回列的索引位置:
cursor.getInt(cursor.getColumnIndex("amount"))
它返回列的值。
我也更换了:
total_amount.setText(m);
这是问题的根源,因为它m是一个整数,被视为资源而不是文本,具有:
total_amount.setText("" + m);
此外,如果您想要的只是列的总和,amount您可以执行此查询:
Cursor cursor =database.rawQuery("select sum(amount) as total from " + PRODUCTS + ";", null);
所以你只需要得到这个查询返回的唯一的行和列,你不需要任何循环来计算总数。
添加回答
举报