Android的getter和setter、数据库SQLite(Helper类)

vfwfrxfs  于 2022-11-14  发布在  SQLite
关注(0)|答案(6)|浏览(143)

我在一个数据库上有一个包含两列的表,然后我尝试使用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从数据库读取数据时可以使用它(它作用于我以前对象,其中包含数据库,并且已经插入了值)。现在我想使用它,因为它有参数,对读取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到底做了什么

3zwtqj6y

3zwtqj6y1#

是的,您可以使用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()) });
}
ygya80vv

ygya80vv2#

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,您将只在Content Values中设置示例的值,但您不会实际使用它,因为调用不会返回任何内容。

j0pj023g

j0pj023g3#

最好了解更多关于使用对象和使用包裹的知识。下面是一个非常有用的工具,可以生成您需要的所有代码,包括表、模型、用于插入的类等等:

http://www.codeproject.com/Tips/842150/Generator-for-SQLite-Use-in-Android

在Android中创建一个名为Dic With ID,Name,Code的表用Put EditText作为名称和代码,并使用onse保存按钮,然后onClick

dic.setName(edtName.getText().toString());
dic.setCode(edtCode.getText().toString());
database.Open()
database.insert(dic);
database.close();

如果要从数据库显示数据到表单,请执行以下操作:

Dic dic = new DIc();
database.open();
dic = database.findDic("id = 1");
database.Close;
lblName.setText(dic.getName().toString());
lblCode.setText(dic.getCode().toString());

为模型添加一个包,并将每个模型放在一个单独的文件中。为DB添加一个包添加两个文件,一个文件名为OpenHelper.Java,另一个文件名为Database.Java,以便于代码管理

svgewumm

svgewumm4#

public class Entity {

    private int id;
    private String name, phone;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}
v440hwme

v440hwme5#

public void insertData(Entity entity) {
        SQLiteDatabase database = getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put(KEY_NAME, entity.getName());
        values.put(KEY_PHONE, entity.getPhone());

        database.insert(DATABASE_TABLE, null, values);
    }
snz8szmq

snz8szmq6#

DbHelper helper = new DbHelper(this);

    btnInsert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String name, phone;
            txtName = findViewById(R.id.txtName);
            txtPhone = findViewById(R.id.txtPhone);

            name = txtName.getText().toString();
            phone = txtPhone.getText().toString();
            if (!(name.equals("") && phone.equals(""))) {
                Entity entity = new Entity();
                entity.setName(name);
                entity.setPhone(phone);

                helper.insertData(entity);
            } else {
                Toast.makeText(MainActivity.this, "Fill the Empty Fields", Toast.LENGTH_LONG).show();
            }

        }
    });

相关问题