【问题标题】:dBASE ODBC drivers on Windows Server 2008Windows Server 2008 上的 dBASE ODBC 驱动程序
【发布时间】:2010-01-27 15:07:56
【问题描述】:

我有一个 C# winforms 应用程序,可以在我们所有的 XP 机器上正常运行。我们想把它放在一个新的 Win 2008 64 位服务器上,它在以下代码上中断:

using (OdbcConnection oConn = new OdbcConnection())
{
    oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + filePath + ";Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
    oConn.Open();

    OdbcCommand oCmd = oConn.CreateCommand();
    oCmd.CommandText = "SELECT DISTINCT Mid(POSTCODE,1,Len(POSTCODE)-2) AS sector FROM " + shortfilename + ".dbf;";

    OdbcDataReader dr = oCmd.ExecuteReader();
    try
    {
        while (dr.Read())
        {
            lstSectors.Items.Add(dr.GetString(0));
        }
    }
    catch
    {
        string err = "Error!";
    }
    finally { dr.Close(); }
}

我得到的错误是:

ERROR [IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

如果我查看 64 位 ODBC 数据源管理员,那里没有 dBASE 驱动程序 - 但在 32 位 (C:\Windows\SysWOW64\odbcad32.exe) 中,它们是 - 我如何让应用程序使用 32 位驱动程序?

【问题讨论】:

    标签: c# odbc windows-server-2008 dbase


    【解决方案1】:

    不能在 64 位应用程序中使用 32 位 ODBC 驱动程序。 64 位进程不能调用 32 位 DLL(无论如何都不能直接调用)。 Microsoft 有一篇关于 64-bit ODBC administrator 的知识库文章可能会有所帮助。

    【讨论】:

    • 这是我第一次使用 64 位操作系统,请原谅我对这些东西的无知和完全缺乏知识。该应用程序是用 VS2005 编写的,在服务器上我们有 VS2008,所以它已经被打开并转换了。这会使这个版本的应用程序成为 64 位吗?看过这篇文章后,它指出解决方法是在 32 位管理工具中创建数据源,但问题是,我正在查询 .dbf 文件并且文件位置每次都会更改,那么我该如何创建数据源..?谢谢
    • 如果您构建项目时将“平台目标”设置为“任何 CPU”,那么它将在 64 位操作系统上作为 64 位进程运行(它会寻找 64位驱动程序)。您可以强制它为 32 位,然后它会寻找 32 位驱动程序。但我认为“任何 cpu”选项是最好的。听起来您没有安装 64 位驱动程序。在其上运行 windows\system32\odbcad32.exe 并查看它们是否存在。如果没有,请运行 mdac v7 安装。它们应该包含在该版本中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多