I'm having a problem executing a query (with ORMLite) that adds the return to 'lastConfiguration' in which you should get the last 'id' inserted in the Configuration table.
The method that looks for the last configuration is as follows:
public Integer buscaIdUltimaAtualizacao() throws SQLException {
GenericRawResults<Integer> raw = this.queryRaw("SELECT MAX (id) FROM configuracao", new RawRowMapper<Integer>() {
Configuracao c = new Configuracao();
@Override
public Integer mapRow(String[] columns, String[] results) throws SQLException {
if(results[0] != null)
return Integer.parseInt(results[0]);
else
return 0;
}
});
return raw.getFirstResult();
}
Class using Sqlite:
@DatabaseTable(tableName = "configuracao", daoClass = ConfiguracaoDao.class)
public class Configuracao {
public Configuracao() {
/*deixar vazio*/
}
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(dataType = DataType.DATE, canBeNull = true)
private Date ultima_atualizacao_artista;
@DatabaseField(dataType = DataType.DATE, canBeNull = true)
private Date ultima_atualizacao_diaEvento;
@DatabaseField(dataType = DataType.DATE, canBeNull = true)
private Date ultima_atualizacao_evento;
...
context where I perform operations:
protected Boolean doInBackground(Void... paths){
try {
this.ultimaConfiguracao = this.confDao.queryForId(confDao.buscaIdUltimaAtualizacao().toString());
if(ultimaConfiguracao != null){
//baixa somente o que tem atualização
}
else{
//region MIDIA
this.query = new ParseQuery("Midia");
this.query.whereEqualTo("ativo", true);
query.findInBackground(new FindCallback() {
@Override
public void done(List list, com.parse.ParseException e) {
if(!list.isEmpty()){
for(ParseObject pObject : (List<ParseObject>) list) {
publishProgress(((Activity) listener).getString(R.string.m_progress_textView_verificandoAtualizacoes));
Midia md = new Midia();
Logcat:
02-23 22:36:24.097 1446-1453/com.universo91.towersrock W/art﹕ Suspending all threads took: 313.333ms
02-23 22:36:24.936 1446-1453/com.universo91.towersrock W/art﹕ Suspending all threads took: 651.381ms
02-23 22:36:25.009 1446-1491/com.universo91.towersrock W/System.err﹕ java.sql.SQLException: Could not perform raw query for SELECT MAX (id) FROM configuracao
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:552)
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at com.universo91.towersrock.DAO.ConfiguracaoDao.buscaIdUltimaAtualizacao(ConfiguracaoDao.java:78)
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at com.universo91.towersrock.BL.PSTowersRock.doInBackground(PSTowersRock.java:72)
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at com.universo91.towersrock.BL.PSTowersRock.doInBackground(PSTowersRock.java:39)
02-23 22:36:25.011 1446-1491/com.universo91.towersrock W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
02-23 22:36:25.012 1446-1491/com.universo91.towersrock W/System.err﹕ Caused by: java.sql.SQLException: Getting a writable database from helper DatabaseHelper@28ef97dc failed
02-23 22:36:25.013 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
02-23 22:36:25.013 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:68)
02-23 22:36:25.013 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.android.AndroidConnectionSource.getReadOnlyConnection(AndroidConnectionSource.java:54)
02-23 22:36:25.014 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.stmt.StatementExecutor.queryRaw(StatementExecutor.java:306)
02-23 22:36:25.014 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.queryRaw(BaseDaoImpl.java:550)
02-23 22:36:25.014 1446-1491/com.universo91.towersrock W/System.err﹕ ... 9 more
02-23 22:36:25.014 1446-1491/com.universo91.towersrock W/System.err﹕ Caused by: android.database.sqlite.SQLiteException: Can't downgrade database from version 4 to 1
02-23 22:36:25.015 1446-1491/com.universo91.towersrock W/System.err﹕ at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:360)
02-23 22:36:25.015 1446-1491/com.universo91.towersrock W/System.err﹕ at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:254)
02-23 22:36:25.066 1446-1491/com.universo91.towersrock W/System.err﹕ at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
02-23 22:36:25.066 1446-1491/com.universo91.towersrock W/System.err﹕ at com.j256.ormlite.android.AndroidConnectionSource.getReadWriteConnection(AndroidConnectionSource.java:66)
02-23 22:36:25.067 1446-1491/com.universo91.towersrock W/System.err﹕ ... 12 more
DatabaseHelper:
package com.universo91.towersrock.DAO;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import com.universo91.towersrock.Models.*;
import java.sql.SQLException;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String databaseName = "towersrock.db";
private static final int databaseVersion = 4;
public DatabaseHelper(Context context) {
super(context, databaseName, null, databaseVersion);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource cs) {
try {
TableUtils.createTable(cs, Midia.class);
TableUtils.createTable(cs, Artista.class);
TableUtils.createTable(cs, Configuracao.class);
TableUtils.createTable(cs, DiaEvento.class);
TableUtils.createTable(cs, Evento.class);
TableUtils.createTable(cs, Excursao.class);
TableUtils.createTable(cs, Ingresso.class);
TableUtils.createTable(cs, Noticia.class);
TableUtils.createTable(cs, Passageiro.class);
TableUtils.createTable(cs, PontoDeVenda.class);
TableUtils.createTable(cs, User.class);
TableUtils.createTable(cs, Veiculo.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource cs, int i, int i2) {
try {
TableUtils.dropTable(cs, Midia.class, true);
TableUtils.dropTable(cs, Artista.class, true);
TableUtils.dropTable(cs, Configuracao.class, true);
TableUtils.dropTable(cs, DiaEvento.class, true);
TableUtils.dropTable(cs, Evento.class, true);
TableUtils.dropTable(cs, Excursao.class, true);
TableUtils.dropTable(cs, Ingresso.class, true);
TableUtils.dropTable(cs, Noticia.class, true);
TableUtils.dropTable(cs, Passageiro.class, true);
TableUtils.dropTable(cs, PontoDeVenda.class, true);
TableUtils.dropTable(cs, User.class, true);
TableUtils.dropTable(cs, Veiculo.class, true);
}catch (SQLException e){
e.printStackTrace();
}
}
@Override
public void close() {
super.close();
}
}