0

我有一个 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(); }
}

我得到的错误是:

错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

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

4

1 回答 1

2

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

于 2010-01-27T15:50:32.630 回答