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