2016-12-07 5 views
0

asp(vbscript)を使用してmysqlに接続していますが、ODBCドライバのバージョンがわかりません。Mysql ODBCドライバのバージョンをプログラムでテストする方法

1-私はODBCのバージョンをプログラムで(あるいは場合によってはphpmyadminのsqlコマンドを使用して)見つける必要があります。

2しかし、可能な解決策として、私はさまざまな接続文字列をループすると役立つかもしれないと思います。エラーを受け渡し、適切な接続文字列を見つけるにはどうすればよいですか?接続文字列からのコールバックまたはFalse/Trueの戻り値はありますか?

可能な接続文字列:

set objcon = Server.CreateObject ("ADODB.Connection")  
    objcon.connectionstring = "Driver={MySQL ODBC 5.2 UNICODE Driver};Server=****;Database=****;User=****;Password=****;Option=3;" 
    objcon.connectionstring = "Driver={MySQL ODBC 5.1 Driver};Server=****;Database=****;User=****;Password=****;Option=3;" 
    objcon.connectionstring = "Driver={MySQL ODBC 3.51 Driver};Server=****;Database=2558_academy;User=****;Password=****;Option=3;" 
+0

winmgmtを使用してレジストリを使用してソリューションを試したことはありますか?私の知る限りでは、それは特権の昇格を必要とせず、レジストリに対する読み取り専用の権利しか必要としません。 –

答えて

1
set filepath=%~f1 
set file=%filepath:\=\\% 
wmic datafile where name^="%file%" get version|findstr /i /v /c:"version" 
echo %errorlevel% 

任意のCOM言語を使用することができますWMIを使用して、バッチファイル。ドライバファイルをパラメータとしてバッチファイルに渡します。

1

ドライバーがインストールされている正確な知識なしにMySQLデータベースに接続する場合は、可能な接続文字列のリストをループして、最初のものが成功するまで試してください。

開いている接続を持つと、接続文字列を解析するか、接続の適切なプロパティを使用できます。コードで

Dim oCnct : Set oCnct = CreateObject("ADODB.Connection") 
    Dim sDrv 
    For Each sDrv In Split("Complete nonsense|MySQL ODBC 5.1 Driver|MySQL ODBC 9.9 Driver", "|") 
     WScript.Echo sDrv 
    On Error Resume Next 
     oCnct.Open Replace("Driver={§};Server=gent;Database=pi;User=pa;Password=po;Option=3;", "§", sDrv) 
     If 0 = Err.Number Then 
     Exit For 
     Else 
     WScript.Echo "Error:", Err.Description 
     End If 
    On Error Goto 0 
    Next 
    If oCnct.State = adStateOpen Then 
    WScript.Echo "Connected to MySQL using", sDrv 
    Dim sProp 
    For Each sProp In Split("Driver Version|Driver ODBC Version", "|") 
     WScript.Echo oCnct.Properties(sProp).Name & ":", oCnct.Properties(sProp).Value 
    Next 
    oCnct.Close 
    Else 
    WScript.Echo "Failed to connected to MySQL" 
    End If 

出力:

Complete nonsense 
Error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
MySQL ODBC 5.1 Driver 
Connected to MySQL using MySQL ODBC 5.1 Driver 
Driver Version: 05.01.0005 
Driver ODBC Version: 03.51 
0

レジストリを開くことができないかもしれませんが、あなたはwinmgmtsサービスを通して照会することができるかもしれません。あなたが好きに変更することができます...それが動作するかどうか私に教えてください。それ以外の場合は、

for each key in split("SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers,x86|SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers,x64", "|") 
    strKeyPath=split(key, ",")(0) 
    arch=split(key, ",")(1) 
    Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv") 
    objRegistry.EnumValues &H80000002, strKeyPath, arrValueNames, arrValueTypes 
    For i = 0 to UBound(arrValueNames) 
     strValueName = arrValueNames(i) 
     objRegistry.GetStringValue &H80000002,strKeyPath,strValueName,strValue 
     Wscript.Echo "[" & arch & "] "& strValue & " " & arrValueNames(i) 
    Next 
Next 

ファイルシステムのコネクタ自体のインストールに関する詳細情報をプログラムで検出した方が簡単かもしれません。あなたがMySQLのための正しいODBC DLLを見つけたら

C:\Windows\System32\odbcad32.exe - GUI tool for seeing the drivers 
cd /d "C:\Program Files" 
dir /s /b *odbc*dll | find /I "MySQL" 

は、あなたは通常、フォルダパスのreadme.txtファイルの先頭行からドライバのバージョンをこすりことができます。

関連する問題