如何使用C#获取64位机器中所有ODBC或Access数据源的列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用C#获取64位机器中所有ODBC或Access数据源的列表相关的知识,希望对你有一定的参考价值。

我的应用程序现在只支持64位,我需要获取机器上或新创建的所有ODBC或Access DataSouces。

下面的代码实现了以32位获取List,但现在它在调用SQLAllocEnv方法时崩溃了。

[DllImport("odbc32.dll")]
private static extern int SQLDataSources(
  int EnvHandle, int Direction, StringBuilder ServerName,
  int ServerNameBufferLenIn, ref int ServerNameBufferLenOut,
  StringBuilder Driver, int DriverBufferLenIn, ref int DriverBufferLenOut);

 [DllImport("odbc32.dll")]
 private static extern int SQLAllocEnv(ref int EnvHandle);

 [DllImport("odbc32.dll")]
 private static extern int SQLFreeEnv(int EnvHandle);

那么,有谁知道如何解决这个问题?

答案

在一些帖子中,我发现将int dataType更改为long将起作用,是的,它也适用于我的情况。

以上是关于如何使用C#获取64位机器中所有ODBC或Access数据源的列表的主要内容,如果未能解决你的问题,请参考以下文章

64位Windows系统如何配置32位ODBC数据源

访问 64 位 ODBC

使用 ODBC 的 VB6 程序在 Win7 64 下无法运行

32位电脑ODBC连接

ODBC 调用失败 - 从 32 位 ODBC 5.1 移动到 64 位 5.3 后出现随机日期溢出错误

使用 C#,如何获取我的机器是 64 位还是 32 位?