2012-04-05 100 views
0

我有一個C++應用程序在數據庫中(SQLite的)存儲數據。設置一個版本通過QxOrm SQLite數據庫文件

很顯然,在未來的版本中,均會被添加列/刪除/重命名,所以我想設置一個版本號來創建的每個數據庫,這樣當有人試圖加載數據庫但它的版本進行比較與當前版本的應用程序並自動添加/刪除/重命名列以匹配當前模式。

我不能在QxOrm文檔中找到的東西,看起來像:

qx::QxSqlDatabase::getSingleton()->setVersion(2); 

因此,首先是有可能做那種事的SQLite?如果不是,我應該創建一個可以保存數據庫版本的表?

回答

2

數據庫版本也許是不夠的:你應該存儲每個持久類的一個版本(每持久化類,也許其它信息,例如像列的列表)。 當您註冊一個持久化類爲QxOrm情況下,你必須把版本號:

QX_REGISTER_HPP_XXX(myClass, myBaseClass, myClassVersion) 

您可以找到有關創建SQL模式進入QxOrm庫的常見問題解答一些信息: http://www.qxorm.com/qxorm_en/faq.html#faq_230

使用QxOrm庫內省的發動機,這是很容易做到的,約反省引擎在這裏更多的細節: http://www.qxorm.com/qxorm_en/faq.html#faq_190

你應該創建一個表到您的數據庫來存儲狀態堅持每經濟需求類:你可以存儲每類中的版本號,列清單等..然後,它會很容易比較兩個版本的持久化類的來修改你的SQL模式。現在

+0

謝謝!很高興看到你在SO上開設了一個賬戶!如果您希望我在QxOrm標籤中添加更多信息,請告訴我! – talnicolas 2012-04-06 12:20:57

0

,你必須QxEntityEditor應用程序來管理你的數據庫架構演變。 QxEntityEditor是QxOrm圖書館多平臺,跨數據庫的圖形編輯器。 的QxEntityEditor功能的視頻演示,請訪問:http://www.qxorm.com/qxorm_en/tutorial_4.html