我想在現有的數據庫中添加一個額外的表,而不會丟失數據。 因此,丟棄表格並將它們創建爲新的選項是沒有選擇的。 這樣做的最好方法是什麼?在現有的SQLITE中創建額外的表(無數據丟失)
6
A
回答
3
我這樣做的方式是創建一個單獨的數據庫,將當前的所有內容複製到臨時新數據庫中,然後刪除舊數據庫,然後將其從臨時數據庫中複製回來。
不知道是否有另一種方式來做到這一點,但如果有我喜歡聽到它
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);
}
相關問題
- 1. 在現有的數據庫sqlite糖orm中創建表
- 2. 外表套上CoreService創建組件丟失的元數據
- 3. 在logCat中發現創建的數據庫丟失
- 4. 插入sqlite數據庫使用PHP創建額外的字段
- 5. 從sqlite中的現有表創建數據庫
- 6. 從sqlite數據庫中丟失數據
- 7. EF創建額外的表
- 8. 表sqlite中的數據庫丟失的表
- 9. 在SQLite數據庫表中添加額外的列
- 10. Firebase在創建帳戶時創建額外的用戶數據
- 11. 無法在android上的sqlite數據庫中創建表格
- 12. 如何創建一個用於修改數據庫中現有表而不丟失現有信息的腳本?
- 13. 表未在SQLite數據庫中創建
- 14. 在數據庫sqlite中創建新表
- 15. 錯誤:數據庫連接「Sqlite」丟失或無法創建CakePHP 2.9.0
- 16. 如何更新SQLite數據庫並且不會丟失所有現有數據?
- 17. 額外的數據正在插入我的sqlite數據庫
- 18. 從SQLite中的現有數據庫創建腳本3
- 19. Xcode的SQLite數據庫創建無Z_METADATA
- 20. 無法創建SQLite數據庫的Android
- 21. 在我的SQLite數據庫中出現意外的表格
- 22. 圖表 - 有額外的數據
- 23. 導入csv文件後,我的sqlite數據庫表中正在創建額外的行
- 24. Laravel用戶::創建丟失數據
- 25. 在SQLite數據庫中創建Oracle數據庫表的副本
- 26. 如何使用基於現有數據的額外列創建視圖?
- 27. 丟失的數據庫表
- 28. 在現有數據庫上創建表
- 29. 在Symfony的MySQL中重建沒有丟失數據的模型
- 30. 如何在附加的sqlite數據庫中創建外鍵?
似乎要容易得多。 我使用SQLiteOpenHelper。 因此,如果數據庫已經存在,onCreate()永遠不會被調用。 當版本號增加時,調用onUpdate()。 在onUpdate()我添加了我的新表「如果不存在,創建表」。 從SQLITE.ORG文檔中可以看出:但是,如果將「IF NOT EXISTS」子句指定爲CREATE TABLE語句的一部分,並且已存在同名表或視圖,則CREATE TABLE命令根本不起作用沒有錯誤消息返回)。 現在表已創建並罰款。 – venni 2012-07-05 20:58:06