如何检索上次输入的结果并在该存储后执行减法到SQLite Android

时间:2014-11-04 14:29:04

标签: android sqlite android-sqlite operation


我正在创建一个STOCK IN系统。
我知道如何将新记录插入表中。
但现在,我需要通过检索先前值和使用当前值添加来执行添加。
E.G:
ROWID |股票ID |股票金额|库存总数
01 | A0001 | 20 | 20
02 | B0002 | 50 | 50
03 | A0001 | 40 | 60 <&lt;&lt;&lt; {假设这是新的输入值“40”,当我按下STOCKIN进入数据库时​​,我需要得到“60”} 手段 20 + 40 = 60

以下是代码:
DBAdapter类

        public long stockIn(String indate, String proid, String unit, String total, String rack){

            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_STOCK_IN_DATE, indate);
            initialValues.put(KEY_PRO_CODE, proid);
            initialValues.put(KEY_STOCK_IN_AMT, unit);
            initialValues.put(KEY_STOCK_TOTAL, total);  
            initialValues.put(KEY_STOCK_RACK,rack);     

            return DB.insert(DATABASE_TRANS_TABLE, null, initialValues);

        }

在课堂上搜寻

public void STOCKIN( ) {

    stockinBttn.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {

            String dateInput, IDInput, unitInput, totalInput, rackInput; 

            dateInput = dateLbl.getText().toString().trim();
             IDInput = proidTxt.getText().toString().trim();
             unitInput = prounitTxt.getText().toString().trim();
             totalInput = prounitTxt.getText().toString().trim();
             rackInput = prorackTxt.getText().toString().trim();

                DB.open();
                long id = DB.stockIn(userInput, dateInput, IDInput, unitInput, rackInput);
                DB.close();


        }});


        }


非常感谢您的guyz建议和帮助。 此致

1 个答案:

答案 0 :(得分:0)

从表格中读取所有先前交易的sum,并将其添加到当前金额:

public long stockIn(String indate, String proid, long unit, String rack) {
    long previousTotal = DatabaseUtils.longForQuery(DB,
            "SELECT TOTAL("+KEY_STOCK_TOTAL+")"+
            " FROM "+DATABASE_TRANS_TABLE+
            " WHERE "+KEY_PRO_CODE+" = ?",
            new String[] { proid });
    ContentValues cv = new ContentValues();
    cv.put(KEY_STOCK_IN_DATE, indate);
    cv.put(KEY_PRO_CODE,      proid);
    cv.put(KEY_STOCK_IN_AMT,  unit);
    cv.put(KEY_STOCK_TOTAL,   previousTotal + unit);
    cv.put(KEY_STOCK_RACK,    rack);
    return DB.insert(DATABASE_TRANS_TABLE, null, cv);
}