使用Delphi 7與ADO對象,是否可以從TADOConnection對象中確定ODBC數據庫驅動程序?因此,檢測是否是MS-Access或SQL Server或Oracle等確定TADOConnection對象的ODBC數據庫驅動程序?
該方案通過只是使用ODBC數據源名稱連接到一個數據庫,我想,以確定數據庫是否MS-Access數據庫或SQL Server。我想這樣做是因爲MS-Access和SQL Server使用不同的SQL函數名將整數轉換爲字符串。
該應用程序構建一個SQL字符串,用於檢索某些配置對象的VERSION。它適用於使用cast()
SQL服務器,但我也想支持MS-訪問它使用CStr()
:
SELECT NAME + '_' + CAST(VERSION as varchar) as OBJECT_NAME FROM ANALYSIS // SQL Server
SELECT NAME + '_' + CStr(VERSION) as OBJECT_NAME FROM ANALYSIS // MS-Access
我試着看TADOConnection.Provider但就是在這兩種情況下MSDASQL.1
。
if (myqry.Connection.Provider = 'MSDASQL.1') then
strSQL := strSQL + 'cast(' + myfieldname + ' as varchar)' // always goes here..
else
strSQL := strSQL + 'CStr(' + myfieldname + ')'; // ..never to here
我看過所有的TADOConnection屬性,但我開始懷疑這是不可能的。任何想法如何解決這個問題?