-1

SQLite データベースの残高を更新するはずのこの関数があります。パラメータは 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ここではドメインオブジェクトです。ID関連するプリミティブを (およびここで )渡す代わりにamount; それらはオブジェクトにカプセル化されていBalanceます。これは、たとえばバックエンド データベースから、アプリケーションのさまざまな層を介してデータが流れる方法です。

それから得られる利点の 1 つは、後で交換されるデータを追加または削除することにした場合でも、クラス インターフェイス (メソッド シグネチャ) が変更されないことです。たとえば、後で別の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()を印刷する方法がわかりません。したがって、独自のカスタム クラスを定義するときはいつでも、通常はメソッドを実装して、そのオブジェクトのテキスト表現を取得できるようにします。amountIDtoString()

Balanceしたがって、クラスに次を追加します

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

Balanceこれで、オブジェクトを印刷しようとするたびに、そのオブジェクトが表示さ_id_amountます。

于 2013-08-08T22:08:47.330 に答える