Android:摆脱你的sqlite数据库

时间:2011-08-11 19:51:30

标签: android eclipse sqlite

每次我将应用程序的新版本从Eclipse发送到我的手机时,我都会擦除并重新创建我的应用程序的数据库(我经常开发和更改我的数据库)。最简单的方法是什么?

3 个答案:

答案 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); 
   }

}