/ / Executando manualmente a consulta sql no Android - android, sqlite

Executando manualmente a consulta sql no Android - android, sqlite

Eu já tenho um banco de dados no meu aplicativo usando um terceiro biblioteca. A biblioteca não parece ter funcionalidade drop table. Então eu estava pensando em alterá-lo diretamente usando SQLiteOpenHelper API. Isso é possível?

Eu criei uma classe que estende SQLiteOpenHelper e dar-lhe o mesmo nome de banco de dados como aquele usado na biblioteca.

public class SqliteDatabaseHelper extends SQLiteOpenHelper {

// Database Info
private static final String DATABASE_NAME = "myDatabase";
private static final int DATABASE_VERSION = 1;

private Context context;

public SqliteDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
L.w("old: " + oldVersion + ", " + "new: " + newVersion);
if (oldVersion != newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + "deals_latest");
onCreate(db);
L.w("drop it like it"s hot");
}
}
}

E eu inicializá-lo na classe Application, apenas para ver se ele reflete a classe db que eu criei.

SQLiteDatabase db = new SqliteDatabaseHelper(this).getReadableDatabase();
L.w("version: " + db.getVersion());
L.w("path: " + db.getPath());

SqliteDatabaseHelper helper = new SqliteDatabaseHelper(this);
helper.onUpgrade(db, 1, 2); // this line suppose to invoke the drop table query

Ao executar o aplicativo, onUpgrade() método não parece ser chamado.

Lembre-se, eu nunca tive nenhuma experiência emusando o ajudante SQLite nativo, então não tenho idéia do que está acontecendo aqui. Meu objetivo é apenas ver se a consulta no onUpgrade é executada ou não. Mas a tabela ainda existe no banco de dados.

Como faço para contornar isso?

Respostas:

1 para resposta № 1

o SQLiteOpenHelper A classe ajuda a gerenciar as versões do seu próprio banco de dados.

Não faz sentido usá-lo para um banco de dados gerenciado por código de terceiros.

Basta abrir o banco de dados diretamente com openDatabase().