私はqtライブラリでいくつかのrdbmsへのアクセスを許可するc ++でソフトウェアをやっています。ソフトウェアはPC専用です。プログラムは実行するSQLクエリを選択する必要があるため、ソフトウェアはrdbmsの名前とバージョンを知る必要があります。rdbms でこのデータを取得する方法はありますか?
質問する
172 次
1 に答える
0
rdbms でこのデータを取得する方法はありますか?
これは各 RDBMS に固有です。たとえば、Oracle では次のことができます。
select *
from v$version;
しかし、他の RDBMS では、このビューは存在しません。
いくつかの可能なアプローチ:
とにかくどこかで接続パラメータを定義する必要があります。
SQLFlavor=Oracle
それらは多くの場合 RDBMS 固有であるため、 orのような別のパラメーターを追加するだけで、コード内でSQLFlavor=MySQL
の値を使用して、使用するSQLFlavor
SQL ステートメントを決定できます。いくつかのヒューリスティックを使用して、RDBMS を見つけることができます。たとえば、
v$version
ビューをクエリします。ビューが存在しない場合はエラーが発生し、それが Oracle ではないことがわかり、次の試行に進むことができます (SELECT VERSION()
MySQL であるかどうかを確認するなど)。それ以外の場合は、結果を使用して具体的な Oracle バージョンを確認できます。
于 2013-03-27T09:08:21.487 に答える