首页 > 解决方案 > SQLite SUM 得到值 0

问题描述

我想从 sqltie 函数 SUM 中获取值,但我得到的值为 0。

我厌倦了这样的例子,比如在 SQLite Android 中计算列的总和。但我没有得到 0 值。这是我的代码

private static final String TABLE_REPORT                = "MST_REPORT";
private static final String FIELD_ID_REPORT             = "ID_REPORT";
private static final String FIELD_REPORT_Dollar         = "REPORT_Dollar";
private static final String FIELD_REPORT_QTY            = "REPORT_QTY";

   //CREATE REPORT TABLE
    String CREATE_REPORT = "CREATE TABLE " + TABLE_REPORT + "("
            + FIELD_ID_REPORT + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + FIELD_REPORT_Dollar + " INTEGER, "
            + FIELD_REPORT_QTY+ " INTEGER "+ ")";
    db.execSQL(CREATE_REPORT);

    //REPORT
    //ADD REPORT
    public void addReport(MstReport Report) {
    SQLiteDatabase db       = this.getWritableDatabase();
    ContentValues values    = new ContentValues();
    values.put(FIELD_ID_REPORT, Report.getIdReport());
    values.put(FIELD_REPORT_Dollar, Report.getReportDollar());
    values.put(FIELD_REPORT_QTY, Report.getReportQty());
    db.insert(TABLE_REPORT, null, values);
}

    //GET ALL REPORT
    public List<MstReport> getAllReport() {
    List<MstReport> ListReport    = new ArrayList<MstReport>();
    String selectQuery                  = "SELECT  * FROM " + TABLE_REPORT;
    SQLiteDatabase db                   = this.getWritableDatabase();
    Cursor cursor                       = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            MstReport Data = new MstReport();
            Data.setIdReport(cursor.getString(0));
            Data.setReportDollar(cursor.getInt(1));
            Data.setReportQty(cursor.getInt(2));
            ListReport.add(Data);
        } while (cursor.moveToNext());
    }
    return ListReport;
}

当我调用 getAllReport 函数时,它是有价值的。但是当我调用函数 SUM 时,我得到的值为 0。这是函数 (getReportUSD())..

public List<MstReport> getReportUSD() {
    List<MstReport> ListReportSUMD = new ArrayList<MstReport>();
    String selectQuery             = "SELECT SUM (" +FIELD_REPORT_Dollar+ ")as TotalUSD FROM " + TABLE_REPORT;
    SQLiteDatabase db              = this.getWritableDatabase();
    Cursor cursor                  = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            MstReport Data = new MstReport();
             Data.setReportRp(cursor.getColumnIndex("TotalUSD");
            ListReportSUMD.add(Data);
        } while (cursor.moveToNext());
    }
    return ListReportSUMD;
} 

当我调试结果是 SUM 值为 0。对不起,我是新手开发人员。希望您能够帮助我。谢谢 :)

标签: androiddatabasesqlitesum

解决方案


利用

Data.setReportRp(cursor.getInt(cursor.getColumnIndex("TotalUSD")));

代替

Data.setReportRp(cursor.getColumnIndex("TotalUSD");

当前将列索引传递给setReportRp方法。


推荐阅读