-1

我正在用 c++ 做一个软件,它允许使用 qt 库访问一些 rdbms。该软件仅适用于PC。软件需要知道 rdbms 的名称和版本,因为程序需要选择一些 sql 查询来执行。有没有办法在任何 rdbms 中检索此数据?

4

1 回答 1

0

有没有办法在任何 rdbms 中检索此数据?

这特定于每个 RDBMS - 例如,在 Oracle 中,您可以执行

select *
from v$version;

但在其他 RDBMS 中不存在此视图。

一些可能的方法:

  • 无论如何,您都需要在某处定义连接参数。即使它们通常是特定于 RDBMS 的,所以您可以简单地添加另一个参数,例如SQLFlavor=OracleorSQLFlavor=MySQL然后使用SQLFlavor代码中的值来确定要使用哪个 SQL 语句

  • 您可以使用一些启发式方法来找出 RDBMS。比如查询v$version视图——如果它不存在,你会得到一个错误,你知道它不是Oracle,你可以继续下一次尝试(比如SELECT VERSION()看看它是否是MySQL)。否则,您可以使用结果找出具体的 Oracle 版本。

于 2013-03-27T09:08:21.487 回答