Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Server 2008上的dBASE ODBC驱动程序_C#_Odbc_Windows Server 2008_Dbase - Fatal编程技术网

C# Windows Server 2008上的dBASE ODBC驱动程序

C# Windows Server 2008上的dBASE ODBC驱动程序,c#,odbc,windows-server-2008,dbase,C#,Odbc,Windows Server 2008,Dbase,我有一个C#winforms应用程序,可以在我们所有的XP机器上正常工作。我们想把它放在一个新的Win 2008 64位服务器上,它在以下代码中中断: using (OdbcConnection oConn = new OdbcConnection()) { oConn.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + filePath + ";Exclusiv

我有一个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位驱动程序?

从64位应用程序使用32位ODBC驱动程序是不可能的。64位进程无法调用32位DLL(无论如何也不能直接调用)。微软有一篇KB文章介绍了可能会有所帮助的。

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