簡體   English   中英

Android sqlite列總和?

[英]Android sqlite column sum?

首先,我是編程的新手,目前正在學習 Android。這也是我在這里的第一個問題,如果有任何錯誤,請原諒。 問題是我被困在如何獲得數據庫列的總數上。 這是我從 sqlite 助手中檢索數據的代碼。

private void GetColumnTotal() {
    SQLHelper ColumnTOtal = new SQLHelper(this);
    try {
        ColumnTOtal.open();
        int total = ColumnTOtal.Total();
        ColumnTOtal.close();
        RemainingAmount.setText(""+total);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

`這是我的sqlite助手的代碼。 我都貼出來了,希望大家幫忙。

public class SQLHelper {
public static final String KEY_ROWID = "_id";
public static final String KEY_MONEY = "SpendedMoney";

private static final String DATABASE_NAME = "BudgetDB";
private static final String DATABASE_TABLE = "BudgetTable";
private static final int DATABASE_VERSION = 1;
private final Context ourContext;
private SQLiteDatabase ourDATABSE;
private DBHelper ourHelper;


public SQLHelper(Context context) {
    ourContext = context;

}

public SQLHelper open() throws SQLException {

    ourHelper = new DBHelper(ourContext);
    ourDATABSE = ourHelper.getWritableDatabase();
    return this;
}

public void close() {
    ourHelper.close();
}

public long createEntry(String money) {
    ContentValues cv = new ContentValues();
    cv.put(KEY_MONEY, money);

    return ourDATABSE.insert(DATABASE_TABLE, null, cv);
}

public String getData() {
    String[] columns = new String[]{KEY_ROWID, KEY_MONEY};
    Cursor c = ourDATABSE.query(DATABASE_TABLE, columns, null, null, null, null, null);
    String result = "";


    int iRow = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_MONEY);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iRow) + " :- " + c.getString(iName) + "\n";
    }
    return result;
}

public int Total() {
    Cursor cur = ourDATABSE.rawQuery("SELECT SUM(SpendedMoney) FROM BudgetTable", null);
    if (cur.moveToFirst()) {
    }
return cur.getInt(0);
}


private static class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" +
                        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        KEY_MONEY + " TEXT NOT NULL);"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }
}

解決了!! 謝謝大家。 還有那個拒絕我的問題的人.. :)

此錯誤消息與 SQLite 無關。 在其他地方,您正在使用 0,其中需要字符串資源 ID。 一個示例可能是您在TextView上使用setText(int)而不是setText(CharSequence)來顯示結果。 堆棧跟蹤應該告訴你在哪里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM