我想了解如何處理SQLite。我有一個與以下類的會員數據庫:瞭解SQLite
package com.appiclife.saldo.data;
public class Member {
private long id;
private String name;
private String phone;
private String email;
private int weight;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
然後,我有以下助手類來創建和更新數據庫:
我有以下幾種方法:
public class MembersDataSource {
// Database fields
private SQLiteDatabase database;
private MemberSQLiteHelper dbHelper;
private String[] allColumns = { MemberSQLiteHelper.COLUMN_ID,
MemberSQLiteHelper.COLUMN_NAME, MemberSQLiteHelper.COLUMN_PHONE, MemberSQLiteHelper.COLUMN_EMAIL, MemberSQLiteHelper.COLUMN_WEIGHT};
public MembersDataSource(Context context) {
dbHelper = new MemberSQLiteHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public Member createMember(String name, String phone, String email, int weight) {
ContentValues values = new ContentValues();
values.put(MemberSQLiteHelper.COLUMN_NAME, name);
values.put(MemberSQLiteHelper.COLUMN_PHONE, phone);
values.put(MemberSQLiteHelper.COLUMN_EMAIL, email);
values.put(MemberSQLiteHelper.COLUMN_WEIGHT, weight);
long insertId = database.insert(MemberSQLiteHelper.TABLE_MEMBERS, null, values);
Cursor cursor = database.query(MemberSQLiteHelper.TABLE_MEMBERS, allColumns, MemberSQLiteHelper.COLUMN_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
Member newMember = cursorToMember(cursor);
cursor.close();
return newMember;
}
public void deleteMember(Member member) {
long id = member.getId();
database.delete(MemberSQLiteHelper.TABLE_MEMBERS, MemberSQLiteHelper.COLUMN_ID
+ " = " + id, null);
}
public List<Member> getAllMembers() {
List<Member> members = new ArrayList<Member>();
Cursor cursor = database.query(MemberSQLiteHelper.TABLE_MEMBERS,
allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Member member = cursorToMember(cursor);
members.add(member);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return members;
}
private Member cursorToMember(Cursor cursor) {
Member member = new Member();
member.setId(cursor.getLong(0));
member.setName(cursor.getString(1));
member.setPhone(cursor.getString(2));
member.setEmail(cursor.getString(3));
member.setWeight(cursor.getInt(4));
return member;
}
}
而且問題,
哪有我改變例如已經在數據庫中的成員的名字? (1)
是否有可能保存一個Arraylist,例如,如果他們有更多的phonenumbers? (2)
而且,如果我刪除數據庫中的一行,請更改以下行的ID?或者,當我想要檢索同一個成員時,我是否可以始終引用相同的ID?所以通過其他方式,一旦創建成員保持相同的ID? (3)
如果你想保存一個arraylist,請嘗試將它轉換爲JsonObject – dumazy
謝謝!我要去嘗試一下! – Diego
我更新了我的答案以解決您最後的問題。 –