美文网首页
ormLite之库表数据迁移(增加字段升级版本号)二

ormLite之库表数据迁移(增加字段升级版本号)二

作者: Time_x | 来源:发表于2020-06-16 13:43 被阅读0次

前言

在之前的文章中已经进行过简单的介绍ormlite数据库的简单的操作使用(包含 增 删 改 查 等...),以及包含了库表简单暴力的升级方法,直接删除旧表,更改版本号,重新创建库表的操作.

今天

应粉丝的要求,来更新一篇此库表的 增加字段库表升级的方法介绍,即 保留旧表的数据,增加新的字段数据,同时
升级库表版本号的完美操作,废话不多,直接上代码

这是库表锁对应的实体类(这是已经新增的两个字段 age sex)
    @DatabaseTable(tableName = "persons")
    public class Person {
         @DatabaseField(id = true)
         private String name;
         @DatabaseField
         private String password;
         @DatabaseField
         private String age;
         @DatabaseField
         private String sex;
这是库表版本号(我默认原始版本号为7,当然你自己根据实际情况来定)
 public DatabaseHelper(Context context) {
    super(context, TABLE_NAME, null, 7);
}

 @Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
    try {
        TableUtils.createTable(connectionSource, Person.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }

}
 @Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) {

    if(oldVersion < 7){//暂不说明为何要这么判断
        DatabaseUtil.upgradeTable(db,connectionSource,Person.class,DatabaseUtil.OPERATION_TYPE.ADD);
    }
    onCreate(db,connectionSource);
}

工具类(迁移库表数据所需要用到的,直接贴到你的项目中就行)

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;

     import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
    import com.j256.ormlite.dao.Dao;
    import com.j256.ormlite.support.ConnectionSource;
    import com.j256.ormlite.table.TableUtils;

    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;


    public class DatabaseHelper extends OrmLiteSqliteOpenHelper {


private static final String TABLE_NAME = "person.db";

private Map<String, Dao> daos = new HashMap<String, Dao>();

public DatabaseHelper(Context context) {
    super(context, TABLE_NAME, null, 7);
}

@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {

    try {
        TableUtils.createTable(connectionSource, Person.class);

    } catch (SQLException e) {
        e.printStackTrace();
    }

}

@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) {

    if(oldVersion < 7){//暂不说明为何要这么判断
        DatabaseUtil.upgradeTable(db,connectionSource,Person.class,DatabaseUtil.OPERATION_TYPE.ADD);
    }
    onCreate(db,connectionSource);
}

private static DatabaseHelper instance;

/**
 * 单例获取该Helper
 *
 * @param context
 * @return
 */
public static synchronized DatabaseHelper getHelper(Context context) {
    context = context.getApplicationContext();
    if (instance == null) {
        synchronized (DatabaseHelper.class) {
            if (instance == null){
                instance=new DatabaseHelper(context);
            }
        }
    }
    return instance;
}

public synchronized Dao getDao(Class clazz)throws SQLException{
    Dao dao=null;
    String className=clazz.getSimpleName();
    if(daos.containsKey(className)){
        dao=daos.get(className);
    }
    if(dao==null){
        dao=super.getDao(clazz);
        daos.put(className,dao);
    }
    return dao;
}

/**
 * 释放资源
 */

@Override
public void close() {
    super.close();

    for(String key:daos.keySet()){
        Dao dao=daos.get(key);
        dao=null;
    }
}

}

下一步直接去你要操作的数据进行增加库表数据
未增加字段之前的数据为 image.png
添加数据操作 image.png
增加字段后 image.png
添加数据操作 image.png

来了来了,最重要的操作来了

注意此时吧数据库版本号改为8(默认我的版本号为7),同时看下图代码操作 image.png

代码走到这里,相信你们应该大致明白是怎么回事了吧? 现在直接去点击添加数据操作,然后把数据库表导出来,你会发现 之前的数据和现在添加进去的数据都存在,而且数据库版本已经升级了 image.png

之所以出现三条数据,是因为我懒得删除重新运行了,比较第一条数据跟第三条数据就明白了吧?

博主比较懒,你们有需要什么内容或者需求 可以直接留言我,我会尽快给你们更新

相关文章

  • ormLite之库表数据迁移(增加字段升级版本号)二

    前言 在之前的文章中已经进行过简单的介绍ormlite数据库的简单的操作使用(包含 增 删 改 查 等...),以...

  • FMDB 关于数据库升级那些事

    数据库升级在数据库中增加字段 一 表迁移 步骤 旧表改名 2.创建新表 3.迁移旧表数据 4.创建数据迁移成功标记...

  • Android GreenDao数据库升级操作

    使用场景 版本升级后,增加表、删除表、增加字段、删减字段等。为了保留原始数据,需要将数据进行迁移。使用GreenD...

  • OrmLite 数据库升级

    一下只是简单的介绍一下OrmLite 数据库的升级用法 在我们开发的过程中,难免会因为增加字段,或者增加新表,从而...

  • Android 数据库

    sqlite详解 sqlite升级,增加字段的语句 数据库框架对比和源码分析 数据库的优化 数据库数据迁移问题

  • Sqlite升级时向已有表中增加字段

    Sqlite升级时向已有表中增加字段 Sqlite数据库升级时,我们经常会遇到给已有表中增加字段的操作。一般来说,...

  • MySQL常用命令语句(一)

    一.连接 二. 库 三.表 四、插入数据 五、检索数据 六、增加字段

  • 使用FMDB进行数据库迁移(升级)

    简要记录下使用的语句。当我们app版本升级,有可能对原本的表进行增加字段,如果不进行数据库迁移这时候如果用户用旧版...

  • GreenDao数据库升级

    GreenDao数据库升级 第1步:升级数据库版本号 第2步:修改数据库实体类 第3步:迁移数据库 注:数据库升级...

  • GreenDao数据库升级解决方案

    主要思路: 删除表不改动 新增表:创建新表 增加新字段:在原有表上直接新增字段 修改或删除原有字段:数据迁移

网友评论

      本文标题:ormLite之库表数据迁移(增加字段升级版本号)二

      本文链接:https://www.haomeiwen.com/subject/wgilxktx.html