Android SQLite向表中添加新列

时间:2013-10-04 20:08:20

标签: android android-sqlite

我的应用程序中有一个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);

        }

3 个答案:

答案 0 :(得分:3)

是的,如果您正在使用DatabaseHelper,那么有一种方法可以升级数据库架构。

你可以找到很多有关这方面的教程。

这是一个。 Android update SQLite DB schema?

您正在寻找的方法是onUpgrade

除非先更改实际的列名,否则不要重命名引用实际表列的变量。您将不得不使用SQL查询来执行您想要的操作。

答案 1 :(得分:0)

您只需在onUpgrade方法中添加ALTER TABLE查询,然后不要忘记增加帮助程序类中的数据库版本,这样您就可以将现有数据保留在表中。或者如果您仍在开发中,只需删除表并使用新更改重新创建它。 如果你给我一个你想要成功的例子,我可能会帮助你更多。

感谢。

答案 2 :(得分:0)

如果数据库版本:6 例如:有一个包含5列的表

升级到:7

  1. 我们需要在创建表格时添加列
  2. onUpgrade方法:

    if(oldVersion< 7)
    { db.execSQL(DATABASE_ALTER_ADD_PAPER_PAID); db.execSQL(DATABASE_ALTER_LAST_UPLOADED); db.execSQL(DATABASE_ALTER_PAPER_LABEL); }

  3. 完成上述两项操作后,它将适用于全新安装用户和应用升级用户

    此致 维诺德