有人请帮助我正确使用sqliteopenhelper类中的onUpgrade()。提前感谢。sqlite中onUpgrade()的用法是什么?
-1
A
回答
0
在Sqliteopenhelper中定义数据库版本。如果你改变你的数据库版本onUpgrade()
将被执行。它是onCreate()
的对应部分
在onUpgrade中,您将删除旧表并生成新表。
有一个小例子:
public class BaseDatabaseHandler extends SQLiteOpenHelper {
/********************************************************
* Database
********************************************************/
private static final int DATABASE_VERSION = 4;
private static final String DATABASE_NAME = "test.db";
/********************************************************
* Table names
********************************************************/
protected static final String TABLE_INPUT = "input";
/********************************************************
* Column names
********************************************************/
/* Input*/
protected static final String COLUMN_ID = "id";
protected static final String COLUMN_NAME = "name";
public BaseDatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_INPUT_TABLE =
"CREATE TABLE " + TABLE_INPUT + " ("
+ COLUMN_ID + " LONG PRIMARY KEY, "
+ COLUMN_NAME + " TEXT, "
+ ")";
db.execSQL(CREATE_INPUT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_INPUT);
onCreate(db);
}
}
+0
亲爱的Dteuchert,谢谢你的回复。我的旧表数据怎么样?如果我更新我的应用程序,它会丢失吗?是否有备份我所有的数据。请解释一下。 –
+0
嘿,是的,这些数据将会丢失。你可以编程一个函数,以某种方式存储你的旧数据,并在'db.execSQL(“DROP TABLE IF EXISTS”+ TABLE_INPUT);' – DTeuchert
1
当您更改数据库表元素或列的值,那么你必须要更新数据,以反映这种变化。 其他方面不会发生这样的表或其他类型的错误。 因此,如果您的应用程序已经上传,那么在更改数据库之后,您必须更改数据库版本并在onUpdate()方法中重新创建所有表。
相关问题
- 1. 调用sqlite onUpgrade问题
- 2. Android SQLite OnUpgrade错误
- 3. 的Android SQlite的OnUpgrade问题
- 4. 什么是错用sqlite的方法
- 5. onUpgrade()Android中的sqlite数据库
- 6. Android SQLite onUpgrade(),创建新表
- 7. Android SQLite onUpgrade =强制关闭
- 8. Android SQLite:使用onUpgrade更新数据?
- 9. sqlite数据库onUpgrade()不会被调用
- 10. 想用SQLite数据库的onUpgrade方法稍微澄清一下
- 11. 为什么SQLiteOpenHelper在“onUpgrade”方法中删除表?
- 12. 在android的sqlite数据库onUpgrade
- 13. 自己的SQLite数据库和onUpgrade
- 14. 如何使用onUpgrade方法在Android中的SQLite表中修改类型?
- 15. Android Sqlite onUpgrade不会复制新列
- 16. SQLite数据库,onUpgrade版本1发布
- 17. 什么是SQLite中的datetime-type列?
- 18. 什么是SQLite中的索引?
- 19. 什么是SQLite文档中的“页面”?
- 20. 什么是SQLite中的影子表?
- 21. SQLite中的加号是什么?
- 22. SQlite中的数据库清理的方法是什么?
- 23. SQLite与SAS一起使用最简单的方法是什么?
- 24. 用SQLite保存SoapEnvelope的最佳方法是什么?
- 25. Android中查询Sqlite时的最佳做法是什么?
- 26. 在SQLite表中更改键的最佳方法是什么?
- 27. SQLite中以下sql的替代方法是什么?
- 28. SQLite中“不等于”的语法是什么?
- 29. 使用onUpgrade更新我的预填充SQLite数据库()
- 30. Android上的SQLite数据库重新创建记录,而不是调用onUpgrade()
检查此链接希望它会帮助你http://developer.android.com/intl/ru/reference/android/database/sqlite/SQLiteOpenHelper.html#onUpgrade(android.database.sqlite.SQLiteDatabase,int,int ) –
使用'onUpgrade()'时你遇到的具体问题是什么? – laalto
其实我有一个家庭自动化应用程序,它有许多设备保存在本地数据库。我怀疑如果由开发人员进行更新,它如何反映在我的本地数据库中。如果所有表都被替换,我将丢失所有数据。无论如何要备份它吗?请帮助我。 –