我的应用程序中有一个SQLite数据库,现在我已经对应用程序,值等进行了一些更改,并且需要重命名(或删除并添加新的)列。
我首先重新命名了列名,但现在我得到了
sqlite.sqliteexception no such column error...
我应该使用一些不同的方法来更改表(列名)而不是这种业余直接方法,这显然会返回此错误吗?
更新
诀窍就在于更改数据库版本:
public DatabaseManidzer(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
Log.w(DatabaseManidzer.class.getName(),"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_VNOSI);
onCreate(db);
}
答案 0 :(得分:3)
是的,如果您正在使用DatabaseHelper,那么有一种方法可以升级数据库架构。
你可以找到很多有关这方面的教程。
这是一个。 Android update SQLite DB schema?
您正在寻找的方法是onUpgrade
除非先更改实际的列名,否则不要重命名引用实际表列的变量。您将不得不使用SQL查询来执行您想要的操作。
答案 1 :(得分:0)
您只需在onUpgrade方法中添加ALTER TABLE查询,然后不要忘记增加帮助程序类中的数据库版本,这样您就可以将现有数据保留在表中。或者如果您仍在开发中,只需删除表并使用新更改重新创建它。 如果你给我一个你想要成功的例子,我可能会帮助你更多。
感谢。
答案 2 :(得分:0)
如果数据库版本:6 例如:有一个包含5列的表
升级到:7
onUpgrade方法:
if(oldVersion< 7)
{
db.execSQL(DATABASE_ALTER_ADD_PAPER_PAID); db.execSQL(DATABASE_ALTER_LAST_UPLOADED);
db.execSQL(DATABASE_ALTER_PAPER_LABEL); }
完成上述两项操作后,它将适用于全新安装用户和应用升级用户
此致 维诺德