-1

我有这个功能应该更新我的 SQLite 数据库中的余额。参数为 Balance balance。我有一个 Balance 课程,我猜它是用来提供帮助的,但我对此并不熟悉。我已经习惯了这样说 updateBalance(int id, String amount) 有人可以向我解释一下这里发生了什么吗?SQLite 世界的新手。

我的 updateBalance 功能:

//Updating single Balance
public int updateBalance(Balance balance){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_AMOUNT, balance.getAmount());

    // updating row
    return db.update(TABLE_BALANCE, values, KEY_ID + " = ?",
            new String[] { String.valueOf(balance.getID()) });
}

我的余额类:

package com.example.budge_it2;

public class Balance {

    //private variables
    int _id;
    String _amount;

    //Empty constructor
    public Balance(){

    }
    //Constructor
    public Balance(int id, String amount){
        this._id = id;
        this._amount = amount;
    }

    public Balance(int id){
        this._id = id;
    }
    //getting ID
    public int getID(){
        return this._id;
    }

    //Setting id
    public void setID(int id){
        this._id = id;
    }

    //getting amount
    public String getAmount(){
        return this._amount;
    }
    //setting amount
    public void setAmount(String amount){
        this._amount = amount;
    }
}
4

2 回答 2

1

Balance这里是域对象。而不是在(IDamount这里)传递相关的原语;它们已被封装到一个Balance对象中。这就是数据流经应用程序不同层的方式,例如,来自后端数据库。

您从中获得的好处之一是,如果您稍后决定添加或删除正在交换的数据,您的类接口(方法签名)不会改变。例如,如果您以后觉得需要传递另一个Balance值(例如,overdraft_limit),您只需要修改Balance该类。所有其他交换Balance对象的类都不会受到这种变化的影响。

编辑
您的方法正在返回一个Balance对象

public Balance getBalance(int id) { /* code */ }

因此,当您尝试打印返回值时

// You're actually printing Balance obj here
Log.d("Getting : ", "testing " + db.getBalance(1));

但是,Balance不是原始的,所以Log.d()不知道如何打印它amount和/或ID. 因此,每当我们定义自己的自定义类时,我们通常会实现一个toString()方法以便能够获取其对象的文本表示。

因此,将以下内容添加到您的Balance课程中

@Override
public String toString() {
    return "Balance [ID=" + _id + ", Amount=" + _amount + "]";
}

现在,每当您尝试打印Balance对象时,您都会看到_id_amount显示它。

于 2013-08-08T22:08:47.330 回答
0

就像在“int id”或“String amount”中一样,第一个单词是类型,第二个单词是该类型实例的参数名称。

于 2013-08-08T21:59:19.407 回答