2016-12-07 60 views
0

我使用的ASP(VBScript)的是连接到MySQL,但我不知道ODBC驱动程序的版本。我没有访问服务器管理和Windows注册表,以便:如何测试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

你是否已经尝试过解决方案W /注册表通Winmgmt的?据我所知,这不需要特权升级,只需要对注册表拥有只读权限。 –

回答

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

使用WMI,其中任何COM语言可以使用批处理文件。将驱动程序文件作为参数传递给批处理文件。

1

如果要连接到MySQL数据库没有确切的知识WRT安装的驱动程序,你应该遍历可能的连接字符串的列表,并尝试他们,直到他们的第一个成功。

有一个开放的连接,您可以解析连接字符串或使用连接的合适性。

在代码:

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 

,如果你给出了一个关于安装连接器本身在文件系统中的详细信息可能更容易也编程方式检测。

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

一旦你找到MySQL的正确的ODBC DLL文件,通常可以从文件夹路径的readme.txt文件的顶部线刮驱动程序版本。