我在数据库设计和SQL开发方面经验不足。
我有实体用户:
public class User {
String name;
String secondName;
}
和DAO for this
public interface UserDAO {
// save
void persistUser(User user);
// obtain from DB
User retrieveUser();
}
实现:public class LibraryUserDAO implements UserDAO{
/** SQL database actually*/
private SQLiteOpenHelper database;
void persistUser(User user){
// saving to DB
}
User retrieveUser(){
// obtain from DB
}
}
我有一个问题。
例如:现在,你可以看到我有两个字段- name和secondName是否有可能使保存到DB进程独立于用户类的变化?
现在保存:
SQLiteDatabase writableDatabase = database.getWritableDatabase();
writableDatabase.beginTransaction();
ContentValues cv = new ContentValues();
cv.put("name", user.name);
cv.put("secondName", user.secondName);
writableDatabase.insert("users", null, cv);
writableDatabase.close();
我想当你添加一个新的字段(例如year
)到类User
,在数据库中,这个字段自动添加为数据库中的一个新列(如果没有)。所以始终保持SQLiteOpenHelper
类不变。(当然,如果可能的话)
考虑为Android使用一些ORM,例如ORMLite或GreenDAO。这样您就不必担心结构变化,因为您不必手动将pojo映射到DB表。