2013-10-04 108 views
1

我的應用程序中有一個SQLite數據庫,現在我已經對應用程序,值等進行了一些更改,需要重新命名(或刪除並添加新的)列。Android SQLite添加新列到表

我最初只是改名爲列名,但現在我得到的

sqlite.sqliteexception no such column error... 

我應該使用改變表(列名)的一些不同的方法,而不是這種業餘直截了當的做法,明顯的回報這個錯誤?

UPDATE

訣竅就是在改變數據庫版本:

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

是的,如果你使用的是DatabaseHelper再有就是升級數據庫架構的方式。

你可以找到很多關於這樣做的教程。

這是一個。 Android update SQLite DB schema?

你正在尋找的方法是onUpgrade

除非你先改變實際的列名不重命名該引用實際的表列中的變量。你將不得不使用sql查詢來做你想做的。

0

您可以簡單地在onUpgrade方法中添加一個ALTER TABLE查詢,然後不要忘記在助手類中增加數據庫版本,這樣您將保留表中的現有數據。或者,如果您仍在開發中,只需刪除表格並使用新更改重新創建表格即可。 如果你給我一個你想要成功的例子,我可能會幫助你更多。

謝謝。

+0

謝謝,我已經被刪除和重建我的表解決了這個問題 - 應用程序仍在開發中,所以在這樣做時沒有問題。 – belosand

0

如果DB版本:6 例:有5列

表當您升級到7

  1. 我們需要添加列創建表
  2. onUpgrade時方法:

    如果(oldVersion < 7)
    { db.execSQL(DATABASE_ALTE R_ADD_PAPER_PAID); db.execSQL(DATABASE_ALTER_LAST_UPLOADED); db.execSQL(DATABASE_ALTER_PAPER_LABEL); }

後上述兩種操作它會正常工作的全新安裝的用戶和應用程序的升級用戶

問候 維諾德