1

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 的驱动程序类型 ..??

4

2 回答 2

0

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

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

于 2015-05-06T07:15:33.823 回答
0

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

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

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

您可以使用SQLGetInfo()with 参数SQL_DBMS_NAME来获取数据库产品的名称。这将使用SQLServer 或MySQLInfoValuePtr等值填充指向的缓冲区。确切的值取决于驱动程序。Microsoft SQL ServerMySQL

于 2015-05-06T13:02:08.367 回答