每次我将应用程序的新版本从Eclipse发送到我的手机时,我都会擦除并重新创建我的应用程序的数据库(我经常开发和更改我的数据库)。最简单的方法是什么?
答案 0 :(得分:2)
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, dbName, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE USERS (username TEXT, password TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS USERS");
onCreate(db);
}
我在我的代码中使用这个:)改变super(context,dbName,null,< database version number>);它将执行onUpgrade方法。
答案 1 :(得分:0)
在Eclipse中,进入Debug Configurations,然后进入左侧的Android Application。选择您正在使用的调试配置,然后选择“目标”选项卡。
在底部,您会看到一个标有"擦除用户数据"的复选框。
如果你检查一下,每次启动模拟器时,与你的应用程序相关的数据(包括SQLite数据库)都将被删除。
然后,您的应用程序将为您的SQLiteOpenHelper调用onCreate(),并重新创建您的数据库。
答案 2 :(得分:0)
如果这是您在活动时不希望做的事情,您可以每次都清除应用程序管理器中的数据。此外,您可以使数据库版本号不同,并使onUpgrade销毁并重新创建数据库
private static final String DATABASE_NAME = "MyDbName";
private static final int DATABASE_VERSION = 6;
private static class DbOpenHelper extends SQLiteOpenHelper{
public DbOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
onUpgrade(this.getWritableDatabase(), 0, 0);
//
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TableHelper1.CREATE_TABLE_QUERY);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+ TableHelper1.TABLE_NAME);
onCreate(db);
}
}