我的应用中已经有一个使用第三方library的数据库。该库似乎没有drop table功能。所以我想用 SQLiteOpenHelper API直接更改它。这可能吗?
我创建了一个扩展SQLiteOpenHelper的类,并为它提供与库中使用的相同的db名称。
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");
}
}
}
我在Application类中初始化它,只是为了看它是否反映了我创建的db类。
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
运行应用时,onUpgrade()
方法似乎无法调用。
请注意,我从未有过使用原生SQLite助手的经验,因此我不知道这里发生了什么。我的目标是查看是否执行onUpgrade中的查询。但该表仍存在于数据库中。
我该如何解决这个问题?
答案 0 :(得分:1)