android 数据库dao,Android中GreenDao对数据库进行升级操作笔记

一、修改app中build.gradle的greendao的配置的schemaVersion

greendao {

//指定数据库schema版本号,迁移等操作会用到

schemaVersion 1

//通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名

daoPackage 'com.companyName.projectName.dao'

/*这就是我们上面说到的自定义生成数据库文件的目录了,

可以将生成的文件放到我们的java目录中,

而不是build中,这样就不用额外的设置资源目录了*/

targetGenDir 'src/main/java'

}

二、修改实体类

添加或删除实体类的属性

@Entity

public class User {

@Id

private Long id;

@Property

private String userName;

@Property

private String password;

@Property

private String email;//新增属性

}

一般的数据库升级这样就可以了,特殊情况可能需要自己编写数据库迁移脚本,这种时候可以自定义DBHelper,定义方式如下,注意继承类:

public class DBHelper extends DaoMaster.OpenHelper{

public DBHelper(Context context, String name) {

super(context, name);

}

public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {

super(context, name, factory);

}

@Override

public void onCreate(Database db) {

super.onCreate(db);

}

//在onUpgrade的方法里重写自己的代码

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

super.onUpgrade(db, oldVersion, newVersion);

}

}

可以在onUpgrade方法中进行数据库的迁移,如果自定义了DBHelper,则数据库的初始化变为如下方式:

public class DBManager {

private DaoMaster daoMaster;

//此处换成DBHelper

private DBHelper helper;

//private DaoMaster.DevOpenHelper helper;

private DaoSession daoSession;

private SQLiteDatabase db;

private static DBManager instance;

public static DBManager getInstance() {

if (instance == null) {

instance = new DBManager();

}

return instance;

}

private void initDB(Context context) {

helper = new DBHelper(context, "yourDatabaseName", null);

db = helper.getWritableDatabase();

daoMaster = new DaoMaster(db);

daoSession = daoMaster.newSession();

}

public DaoSession getDaoSession(Context context) {

if (daoSession == null) {

initDB(context);

}

return daoSession;

}

}

你可能感兴趣的:(android,数据库dao)