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 .. ??
答案 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
等。确切的值取决于驱动程序。