我有一个包含两列的数据库的表,然后我尝试使用webservice,JSON将一些数据从一些URL解析到数据库并保存。我尝试用这种方法做到这一点
public void saveDataRecord(String id, String name) {
ContentValues contentValues = new ContentValues();
contentValues.put(CATEGORY_COLUMN_ID, id);
contentValues.put(CATEGORY_COLUMN_NAME, name);
database.insert(TABLE_NAME, null, contentValues);
}
但是我也有模型类(包含setter和getter),当我尝试使用list从数据库中读取数据时它可以使用(它适用于我之前的对象,其中包含数据库并且已经插入了值)。现在我想使用它,因为它有参数,可以用于读取列表(看看底部代码)。我有点困惑,使用什么getId,getName或setId,setName?
此?
public void saveDataRecord(TheModelClass blablabla) {
ContentValues contentValues = new ContentValues();
contentValues.put(CATEGORY_COLUMN_ID, blablabla.getId());
contentValues.put(CATEGORY_COLUMN_NAME, blablalbla.getName());
database.insert(TABLE_NAME, null, contentValues);
}
还是这个?
public void saveDataRecord(TheModelClass blablabla) {
ContentValues contentValues = new ContentValues();
contentValues.put(CATEGORY_COLUMN_ID, blablabla.setId());
contentValues.put(CATEGORY_COLUMN_NAME, blablalbla.setName());
database.insert(TABLE_NAME, null, contentValues);
}
即使我在我的其他项目中这样做了
public List<TheModelClass> getAllEffectiveRates() {
List<TheModelClass> EffectiveRates = new ArrayList<TheModelClass>();
String selectQuery = "SELECT * FROM " + TABLE_EFFECTIVE_RATE;
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
TheModelClass example = new TheModelClass();
example.setERId(c.getInt(c.getColumnIndex(KEY_ER_ID)));
example.setERTenor(c.getInt(c.getColumnIndex(KEY_ER_TENOR)));
example.setERRate(c.getDouble(c.getColumnIndex(KEY_ER_RATE)));
// add
EffectiveRates.add(example);
} while (c.moveToNext());
}
// db.close();
c.close();
return EffectiveRates;
}
我仍然对getter和setter做的事情感到困惑
答案 0 :(得分:4)
是的,你可以使用Get Set方法
public class GetSetClass {
// private variables
int _id;
String _data;
// Empty constructor
public GetSetClass() {
}
// constructor
public GetSetClass(int id, String data) {
this._id = id;
this._DataList_id = DataList_id;
}
// constructor
public GetSetClass(String data) {
this._data = data;
}
// getting ID
public int getID() {
return this._id;
}
// setting id
public void setID(int id) {
this._id = id;
}
public String getdata() {
return this._data;
}
public void setdata(String data) {
this._data = data;
}
}
请参阅以下使用getset设置数据的代码
public List<GetSetClass> getAllgetsets() {
List<GetSetClass> getsetList = new ArrayList<GetSetClass>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CATEGORY;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
GetSetClass getset = new GetSetClass();
getset.setID(Integer.parseInt(cursor.getString(0)));
getset.setData(cursor.getString(1));
getsetList.add(getset);
} while (cursor.moveToNext());
}
// return getset list
return getsetList;
}
请参阅以下使用getset获取数据的代码
public int updategetset(GetSetClass getset) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_data, getset.getData());
// updating row
return db.update(TABLE_CATEGORY, values, KEY_ID + " = ?",
new String[] { String.valueOf(getset.getID()) });
}
答案 1 :(得分:2)
Getter基本上返回该实例持有的数据。 Setter设置要由实例保存的数据。
在您的情况下,在插入数据时,您应该使用getter作为ContentValues实例中的值。所以它应该是:
public void saveDataRecord(TheModelClass blablabla) {
ContentValues contentValues = new ContentValues();
contentValues.put(CATEGORY_COLUMN_ID, blablabla.getId());
contentValues.put(CATEGORY_COLUMN_NAME, blablalbla.getName());
database.insert(TABLE_NAME, null, contentValues);
}
Getters将返回一个值。 Setters(一般情况下)不会返回值。因此,如果您使用setter,您将只在ContentValues中设置实例的值,但实际上您不会使用它,因为调用不会返回任何内容。
答案 2 :(得分:2)
更好地了解有关使用对象和使用parcelables的更多信息。 这是一个非常有用的工具,可以生成所需的所有代码,包括Table,Model,Insert等等:
http://www.codeproject.com/Tips/842150/Generator-for-SQLite-Use-in-Android
使用Id,Name,Code创建一个表调用Dic 在android中输入EditText作为名称和代码以及onse保存按钮,然后点击
dic.setName(edtName.getText().toString());
dic.setCode(edtCode.getText().toString());
database.Open()
database.insert(dic);
database.close();
如果要将数据从datebase显示为:
Dic dic = new DIc();
database.open();
dic = database.findDic("id = 1");
database.Close;
lblName.setText(dic.getName().toString());
lblCode.setText(dic.getCode().toString());
为Models添加一个包,并将每个模型放在一个单独的文件中。 为Db添加一个包 添加两个文件一个作为OpenHelper.Java,一个用于Database.java以便于管理代码