ORMlite表中的新字段无需清除表

时间:2016-11-02 01:47:31

标签: android ormlite

我有一个很大的问题,我有一个应用程序已经运行在几十个智能手机上,但我需要在一个表中包含一个字段,为此我总是修改银行的版本,但这次我将无法这样做是因为基数已经有记录,比如我是否应该继续只创建所需的字段而不丢失数据?

传输teb中的示例我添加了数据列,但除非我更改数据库版本但我将丢失所有数据,否则不会创建

以下是我的DataHelper:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {

    private static final String DATABASE_NAME = "futebol.db";
    private static final int DATABASE_VERSION = 1;

    private static DatabaseHelper instance = null;

    private Dao<Transmissao, Integer> transmissaoDao;
    private Dao<Clube, Integer> clubeDao;
    private Dao<Configuracao, Integer> configuracaoDao;

    private DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public static DatabaseHelper getInstace(Context context) {
        if (instance == null) {
            instance = new DatabaseHelper(context);
        }
        return instance;
    }


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

    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try {
            TableUtils.dropTable(connectionSource, Transmissao.class, true);
            TableUtils.dropTable(connectionSource, Clube.class, true);
            TableUtils.dropTable(connectionSource, Configuracao.class, true);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        onCreate(database, connectionSource);
    }

    public Dao<Transmissao, Integer> getTransmissaoDao() throws SQLException {
        if (transmissaoDao == null) {
            transmissaoDao = getDao(Transmissao.class);
        }
        return transmissaoDao;
    }
    public Dao<Clube, Integer> getClubeDao() throws SQLException {
        if (clubeDao == null) {
            clubeDao = getDao(Clube.class);
        }
        return clubeDao;
    }
    public Dao<Configuracao, Integer> getConfiguracaoDao() throws SQLException {
        if (configuracaoDao == null) {
            configuracaoDao = getDao(Configuracao.class);
        }
        return configuracaoDao;
    }

}


public class Transmissao implements Serializable {
    @DatabaseField(id = true)
    private int id;
    @DatabaseField
    private int idRelacao;
    @DatabaseField
    private String status;
    @DatabaseField
    private String faseRodada;
    @DatabaseField
    private String diaSemana;
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private Clube timeCasa;
    @DatabaseField
    private String tipoTransmissao;
    @DatabaseField
    private String hora;
    @DatabaseField
    private String nomeCapeonado;
    @DatabaseField
    private String url;
    @DatabaseField(foreign = true, foreignAutoRefresh = true)
    private Clube visitante;
    @DatabaseField
    private String localizacao;
    @DatabaseField
    private String data;

    public Transmissao() {
    }

    public int getIdRelacao() {
        return idRelacao;
    }

    public void setIdRelacao(int idRelacao) {
        this.idRelacao = idRelacao;
    }

    public int getId() {

        return id;
    }

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

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getFaseRodada() {
        return faseRodada;
    }

    public void setFaseRodada(String faseRodada) {
        this.faseRodada = faseRodada;
    }

    public String getDiaSemana() {
        return diaSemana;
    }

    public void setDiaSemana(String diaSemana) {
        this.diaSemana = diaSemana;
    }

    public Clube getTimeCasa() {
        return timeCasa;
    }

    public void setTimeCasa(Clube timeCasa) {
        this.timeCasa = timeCasa;
    }

    public String getTipoTransmissao() {
        return tipoTransmissao;
    }

    public void setTipoTransmissao(String tipoTransmissao) {
        this.tipoTransmissao = tipoTransmissao;
    }

    public String getHora() {
        return hora;
    }

    public void setHora(String hora) {
        this.hora = hora;
    }

    public String getNomeCapeonado() {
        return nomeCapeonado;
    }

    public void setNomeCapeonado(String nomeCapeonado) {
        this.nomeCapeonado = nomeCapeonado;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Clube getVisitante() {
        return visitante;
    }

    public void setVisitante(Clube visitante) {
        this.visitante = visitante;
    }

    public String getLocalizacao() {
        return localizacao;
    }

    public void setLocalizacao(String localizacao) {
        this.localizacao = localizacao;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过添加/删除列来更改表格。 我认为它已经在这里得到了解答 ORMLite update of the database