2013-03-27 126 views
0

我在C++中做一個允許使用qt庫訪問某些rdbms的軟件。 該軟件僅適用於電腦。 該軟件需要知道rdbms和版本的名稱,因爲程序需要選擇一些sql查詢來執行。有沒有辦法在任何rdbms中檢索這個數據?RDbms名稱和版本

回答

0

有沒有辦法在任何rdbms中檢索這個數據?

這是具體到每一個RDBMS - 例如,在Oracle中,你可以做

select * 
from v$version; 

但在其他RDBMS這一觀點並不存在。

一些可能的方案:

  • 您需要反正某處定義連接參數。即使他們往往RDBMS特定的,所以你可以簡單地添加其他參數像SQLFlavor=OracleSQLFlavor=MySQL然後使用SQLFlavor值在你的代碼,以確定使用

  • 你可以使用一些啓發式找出哪些SQL語句RDBMS。例如,查詢v$version視圖 - 如果它不存在,您將收到錯誤,並且您知道它不是Oracle,您可以繼續下一次嘗試(如SELECT VERSION()以查看它是否爲MySQL)。否則,您可以使用結果來找出具體的Oracle版本。

+0

但是在所有的rdbms中都有一些方法來檢索這些信息? – lv92 2013-03-27 09:31:25

+0

我期望如此 - 當然你永遠無法確定:) – 2013-03-27 09:33:45