2012-07-05 25 views

回答

3

我這樣做的方式是創建一個單獨的數據庫,將當前的所有內容複製到臨時新數據庫中,然後刪除舊數據庫,然後將其從臨時數據庫中複製回來。

不知道是否有另一種方式來做到這一點,但如果有我喜歡聽到它

+0

似乎要容易得多。 我使用SQLiteOpenHelper。 因此,如果數據庫已經存在,onCreate()永遠不會被調用。 當版本號增加時,調用onUpdate()。 在onUpdate()我添加了我的新表「如果不存在,創建表」。 從SQLITE.ORG文檔中可以看出:但是,如果將「IF NOT EXISTS」子句指定爲CREATE TABLE語句的一部分,並且已存在同名表或視圖,則CREATE TABLE命令根本不起作用沒有錯誤消息返回)。 現在表已創建並罰款。 – venni 2012-07-05 20:58:06

0

創建擴展SQLiteOpenHelper類,覆蓋的OnOpen(SQLiteDatabase DB),創建表創建一個字符串查詢,然後使用db.execSQL(String str);

4

它似乎更容易。我使用SQLiteOpenHelper。所以如果數據庫已經存在,那麼onCreate()就不會被調用。當版本號增加時,調用onUpdate()。在onUpdate()我添加了我的新表「如果不存在,創建表」。從SQLITE.ORG的文檔:但是,如果「IF NOT EXISTS」子句被指定爲CREATE TABLE語句的一部分,並且已存在同名表或視圖,則CREATE TABLE命令根本無效錯誤消息被返回)。現在桌子已經創建好了。

0

如果你想在現有的數據庫中添加新表,那麼你應該做這個裏面onUpgrade()方法,如: -

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (oldVersion == xyz) { 
     db.execSQL(QUERY_CREATE_TABLE_..........NEW); 
    } 
} 

這裏XYZ是要舊版本的數據庫添加新表格。

記住增加DATABASE_VERSION

當我們增加數據庫版本,那麼onUpgrade()方法調用,以及使用條件添加表。

,也可以創建裏面的onCreate)與現有的表新表(,對於全新安裝,如: -

@Override 
public void onCreate(SQLiteDatabase db) { 
     db.execSQL(QUERY_CREATE_TABLE_..........OLD); 
     db.execSQL(QUERY_CREATE_TABLE_..........OLD); 
     db.execSQL(QUERY_CREATE_TABLE_..........NEW); 
} 
相關問題