-1

私はqtライブラリでいくつかのrdbmsへのアクセスを許可するc ++でソフトウェアをやっています。ソフトウェアはPC専用です。プログラムは実行するSQLクエリを選択する必要があるため、ソフトウェアはrdbmsの名前とバージョンを知る必要があります。rdbms でこのデータを取得する方法はありますか?

4

1 に答える 1

0

rdbms でこのデータを取得する方法はありますか?

これは各 RDBMS に固有です。たとえば、Oracle では次のことができます。

select *
from v$version;

しかし、他の RDBMS では、このビューは存在しません。

いくつかの可能なアプローチ:

  • とにかくどこかで接続パラメータを定義する必要があります。SQLFlavor=Oracleそれらは多くの場合 RDBMS 固有であるため、 orのような別のパラメーターを追加するだけで、コード内でSQLFlavor=MySQLの値を使用して、使用するSQLFlavorSQL ステートメントを決定できます。

  • いくつかのヒューリスティックを使用して、RDBMS を見つけることができます。たとえば、v$versionビューをクエリします。ビューが存在しない場合はエラーが発生し、それが Oracle ではないことがわかり、次の試行に進むことができます ( SELECT VERSION()MySQL であるかどうかを確認するなど)。それ以外の場合は、結果を使用して具体的な Oracle バージョンを確認できます。

于 2013-03-27T09:08:21.487 に答える