【问题标题】:Need to get the Installed ODBC Driver details需要获取已安装的 ODBC 驱动程序详细信息
【发布时间】:2015-05-06 04:59:12
【问题描述】:

odbc 中的 mySql 和 Oracle 驱动程序来连接我的应用程序。现在我需要获取连接的驱动程序详细信息。 (即)如果我在 odbc 中连接一个 sql 数据库,如何找到它与 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 ..??

【问题讨论】:

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


    【解决方案1】:

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

    所以,你不能说一个 DLL 只连接到一个单一的数据库服务器。

    【讨论】:

    • 那么有没有办法在 ODBC 中找到连接所属的驱动程序类型。
    【解决方案2】:

    如果您已经使用其中一个 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 等值。确切的值取决于驱动程序。

    【讨论】:

    • 但我的问题是,我怎么知道从 DSN 建立的连接是 sql 连接还是 mySQL 连接..?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2011-12-15
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多