需要获取已安装的ODBC驱动程序详细信息

时间:2015-05-06 04:59:13

标签: c# mysql odbc driver mysql-odbc-connector

odbc中的mySql和Oracle驱动程序连接我的应用程序。现在我需要获取连接的驱动程序详细信息。 (即)如果在odbc中连接sql datatbase,如何找到与mySql和Oracle类似的SQL。 通过使用此功能,我只能获取DSN名称,而不是驱动程序类型或驱动程序详细信息

 reg = reg.OpenSubKey("ODBC");
        if (reg != null)
        {
            reg = reg.OpenSubKey("ODBC.INI");
            if (reg != null)
            {
                reg = reg.OpenSubKey("ODBC Data Sources");
                if (reg != null)
                {
                    // Get all DSN entries defined in DSN_LOC_IN_REGISTRY.
                        foreach (string sName in reg.GetValueNames())
                        {Messagebox.Show(sName);
                        }
                }
            }
        }

注意:我可以通过其连接扩展名DRIVER获取打开连接中的dll名称,但它仅提供驱动程序的dll名称。但我需要识别驱动程序类型。连接是一个SQL或MySQL od ORACLE .. ??

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的。请查看Microsoft Access / dBase / Excel驱动程序的示例。它们都使用相同的DLL,在我的情况下C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL

因此,您不能说DLL只连接到一个数据库服务器。

答案 1 :(得分:0)

如果已使用其中一个DSN条目(或连接字符串)建立了与数据库的连接,则可以使用SQLGetInfo()函数查询有关驱动程序或数据库的各种详细信息,如SQL_DRIVER_NAME等。

但我不知道这是否真的对你有帮助,因为这需要与数据库建立连接。

请参阅:https://msdn.microsoft.com/en-us/library/ms711681%28v=vs.85%29.aspx

您可以将SQLGetInfo()与参数SQL_DBMS_NAME一起使用以获取数据库产品的名称。这将填充InfoValuePtr指向的缓冲区,其值为SQLServer的Microsoft SQL Server或MySQL的MySQL等。确切的值取决于驱动程序。