每次我从Eclipse发送我的应用程序的新版本到我的手机(我正在开发和更改我的数据库频繁),我会擦除和重新创建我的应用程序的数据库。什么是最简单的方法来做到这一点?Android:摆脱你的SQLite数据库
1
A
回答
0
如果这是您不希望做的事情,那么您可以每次清除应用程序管理器中的数据。另外,还可以使数据库的版本号不同,有onUpgrade破坏并重新创建DB
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);
}
}
0
在Eclipse中,进入调试配置,然后进入左侧的Android应用程序。选择您正在使用的调试配置,然后选择目标选项卡。
在底部,您会看到一个标记为“擦除用户数据”的复选框。
如果您检查,每次启动模拟器时,与您的应用程序(包括SQLite数据库)相关的数据都将被删除。
然后,您的应用程序将为您的SQLiteOpenHelper调用onCreate(),并重新创建您的数据库。
+0
这是不可取的,因为人们不得不重新启动模拟器,这肯定比更新版本更耗时。它不适用于在手机上进行调试,而不适用于仿真器。 – aha
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);
}
我用这个在我的代码:)变化超(背景下,数据库名,空,<数据库版本数>);它会执行onUpgrade方法。
相关问题
- 1. 查询“脱节”的Android SQLite数据库
- 2. 在rails sqlite数据库中摆脱重复的条目
- 3. HTML 5脱机的SQLite数据库
- 4. 修剪数据,摆脱“*”
- 5. 摆脱Android Studio中
- 6. Android SQLite数据库
- 7. Android-SQLite数据库
- 8. Android。 SQLite数据库
- 9. sqlite数据库android
- 10. Android SQLite数据库
- 11. 你如何摆脱Angular的空间?
- 12. 的SQLite数据库的Android
- 13. Android的SQLite的“作者是不是你的数据库列”
- 14. Android的SQLite数据库:CursorIndexOutOfBoundsException
- 15. SQLite数据库中的Android
- 16. Android的SQLite数据库
- 17. Android的SQLite数据库的SQLite数据库空_id字段
- 18. 摆脱数据依赖性的
- 19. 摆脱样本数据中的峰值
- 20. 摆脱函数的参数
- 21. 如何摆脱自动生成的ID的Firebase数据库?
- 22. Android:摆脱灰色条
- 23. (Android)摆脱菜单按钮,摆脱动作栏?
- 24. android - 使用SQLite数据库
- 25. 填充Android SQLite数据库
- 26. Android CustomListview,SQLIte数据库,CustomAdpater
- 27. SQLite数据库位于android
- 28. Android - 打开SQLite数据库
- 29. 插入SQLite数据库android
- 30. 打开Android SQLite数据库
在升级功能中执行此操作的最佳方法是,删除所有表,然后调用onCreate函数? – tjb
您通常在SQLiteOpenHelper中有一个指定数据库版本的字段,并将其传递给构造函数:public SQLiteOpenHelper(上下文上下文,字符串名称,SQLiteDatabase.CursorFactory工厂,int版本)。当你准备好替换数据库时,只需增加版本即可。 – aha
Pyrodante,请检查并接受我的编辑,这会在每次重新启动时更新数据库。一旦干净安装它将不幸被创建和销毁两次 – tjb