Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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# 从64位应用程序读取64位操作系统中的mdb文件时,未找到数据源名称,也未指定默认驱动程序:_C#_Ms Access_Odbc_64 Bit - Fatal编程技术网

C# 从64位应用程序读取64位操作系统中的mdb文件时,未找到数据源名称,也未指定默认驱动程序:

C# 从64位应用程序读取64位操作系统中的mdb文件时,未找到数据源名称,也未指定默认驱动程序:,c#,ms-access,odbc,64-bit,C#,Ms Access,Odbc,64 Bit,我有一个ASP.NET MVC应用程序(64位)在64位Windows系统(Windows Server 2012)中运行 我的web应用程序需要读取mdb数据库,然后我创建了下一个代码: using (var myConnection = new OdbcConnection()) { try { string myConnectionString = @"Driver={Microsoft Access Driver (

我有一个ASP.NET MVC应用程序(64位)在64位Windows系统(Windows Server 2012)中运行

我的web应用程序需要读取mdb数据库,然后我创建了下一个代码:

using (var myConnection = new OdbcConnection())
{                    
    try
    {
        string myConnectionString = @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + fileNameWithPath + ";Persist Security Info=True";
        myConnection.ConnectionString = myConnectionString;
        myConnection.Open();

        OdbcCommand cmd = myConnection.CreateCommand();
        cmd.CommandText = "SELECT * FROM myTable";
        OdbcDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

        // Load the result into a DataTable
        myDataTable = new DataTable();
        myDataTable.Load(reader);
    }
    catch (Exception exception)
    {
        //nexy exception is caught here: "ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
    }
    finally
    {
        myConnection.Close();
    }
}
其中fileNameWithPath是mdb文件的路径

当我执行上面的代码时,我遇到了行中的下一个恼人的异常

myConnection.Open()

错误[IM002][Microsoft][ODBC驱动程序管理器]数据源名称不正确 已找到,但未指定默认驱动程序

我已经检查了服务器,它安装了关于ODBC驱动程序的下一个文件:

文件夹C:\Windows\System32下的文件odbcad32.exe

文件夹C:\Windows\SysWOW64下的文件odbcad32.exe

我的问题是:我的服务器设置正确吗?我是否真的安装了64位版本的ODBC

更重要的是:我是否可以在x64服务器上使用这种配置运行x64应用程序?否则,还有其他选择吗?值得一提的是:

  • 不允许我在服务器中安装其他软件
  • web应用程序必须为64位

提前感谢。

要使用x32位版本的Access数据库引擎,则需要在该计算机上安装x32位版本的数据库引擎

要使用x64位版本的Access数据库引擎,则需要安装x64位版本的Access数据库引擎

嘿,如果您需要读取oracle数据库,那么您需要安装oracle数据库引擎来读取驻留在磁盘驱动器上的oracle文件

如果您不能安装任何其他软件,例如oracle来读取oracle文件,或SQL server来读取SQL server文件,或者在本例中是Access,那么您就是duck soap。实际上,要阅读PDF文件,你需要安装一些PDF文件软件

因此,除非您能够解决不允许在服务器上安装适当软件的问题,否则您将无法读取此类软件使用的给定文件-这适用于几乎所有软件系统-您需要在该服务器上安装适当的软件以启用此类文件的使用

因此,Access数据库引擎(ACE)确实存在x32和x64位版本,除非允许您安装此类软件,否则您无法读取和使用此类数据

因此,请记住,在开发软件时,如果您想要打开word文件、pdf文件或类似任何软件系统,则需要安装apocopate软件才能使用这些文件–Access也不例外。如果您需要打开power point文件,那么很明显您需要在该计算机上安装power point软件


因此,您需要在该服务器上获取并安装Access数据库引擎的x64位版本。由于您注意到无法安装任何软件,因此不太可能实现您的目标。

我通过在IIS的应用程序池的高级设置中启用32位应用程序解决了一个非常类似的问题

感谢您的精彩解释:在每一点上都完全同意您的观点。有时很难向一位经理解释这一点,因为他认为您将管理并找到在不使用其他软件的情况下读取该死的mdb文件的方法。已经说明并指出允许我安装适当的软件。再次感谢您的详细解释。