我有这个函数应该更新我的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;
}
}
答案 0 :(得分:1)
Balance
是一个域对象。而不是在这里传递相关的原语(ID
和amount
);它们已被封装到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
。
答案 1 :(得分:0)
就像在“int id”或“String amount”中一样,第一个单词是类型,第二个单词是该类型实例的参数名称。