0
我在C++中做一個允許使用qt庫訪問某些rdbms的軟件。 該軟件僅適用於電腦。 該軟件需要知道rdbms和版本的名稱,因爲程序需要選擇一些sql查詢來執行。有沒有辦法在任何rdbms中檢索這個數據?RDbms名稱和版本
我在C++中做一個允許使用qt庫訪問某些rdbms的軟件。 該軟件僅適用於電腦。 該軟件需要知道rdbms和版本的名稱,因爲程序需要選擇一些sql查詢來執行。有沒有辦法在任何rdbms中檢索這個數據?RDbms名稱和版本
有沒有辦法在任何rdbms中檢索這個數據?
這是具體到每一個RDBMS - 例如,在Oracle中,你可以做
select *
from v$version;
但在其他RDBMS這一觀點並不存在。
一些可能的方案:
您需要反正某處定義連接參數。即使他們往往RDBMS特定的,所以你可以簡單地添加其他參數像SQLFlavor=Oracle
或SQLFlavor=MySQL
然後使用SQLFlavor
值在你的代碼,以確定使用
你可以使用一些啓發式找出哪些SQL語句RDBMS。例如,查詢v$version
視圖 - 如果它不存在,您將收到錯誤,並且您知道它不是Oracle,您可以繼續下一次嘗試(如SELECT VERSION()
以查看它是否爲MySQL)。否則,您可以使用結果來找出具體的Oracle版本。
但是在所有的rdbms中都有一些方法來檢索這些信息? – lv92 2013-03-27 09:31:25
我期望如此 - 當然你永遠無法確定:) – 2013-03-27 09:33:45