0

QxOrmを介してデータベース(SQLite)にデータを格納するC++アプリケーションがあります。

次のバージョンでは、列が追加/削除/名前変更されることは明らかです。作成された各データベースにバージョン番号を設定して、誰かがデータベースを読み込もうとしたときに、そのバージョンを現在のバージョンと比較できるようにします。アプリケーションの名前を付け、現在のスキーマに一致するように列を自動的に追加/削除/名前変更します。

QxOrmのドキュメントで、次のようなものを見つけることができませんでした。

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

では、最初にSQLiteでそのようなことを行うことは可能ですか?そうでない場合は、データベースのバージョンを保持するテーブルを作成する必要がありますか?

4

2 に答える 2

2

データベースのバージョンはおそらく十分ではありません。永続クラスごとにバージョンを保存する必要があります(たとえば、列のリストなど、永続クラスごとに他の情報を保存する必要があります)。永続クラスをQxOrmコンテキストに登録するときは、バージョン番号を入力する必要があります。

QX_REGISTER_HPP_XXX(myClass, myBaseClass, myClassVersion)

SQLスキーマの作成に関するいくつかの情報はQxOrmライブラリのFAQにあります: http ://www.qxorm.com/qxorm_en/faq.html#faq_230

QxOrmライブラリのイントロスペクションエンジンを使用すると、非常に簡単に実行できます。イントロスペクションエンジンの詳細については、 http ://www.qxorm.com/qxorm_en/faq.html#faq_190を参照してください。

データベースにテーブルを作成して、各永続クラスの状態を保存する必要があります。クラスごとのバージョン番号、列のリストなどを保存できます。そうすると、永続クラスの2つのバージョンを比較して変更するのが非常に簡単になります。 SQLスキーマ。

于 2012-04-06T07:49:33.590 に答える
0

これで、データベーススキーマの進化を管理するためのQxEntityEditorアプリケーションができました。QxEntityEditorは、QxOrmライブラリ用のマルチプラットフォームおよびクロスデータベースのグラフィックエディタです。QxEntityEditor機能のビデオプレゼンテーションはこちらから入手できます:http ://www.qxorm.com/qxorm_en/tutorial_4.html

于 2014-03-02T18:41:59.170 に答える