c# - 无法使用 ADOX 创建 Access 数据库

标签 c# ms-access adox

我在 ADOX Interop 方面遇到了一个非常奇怪的问题。

我有这个代码:

        try
        {
            if (File.Exists(path))
                File.Delete(path);

            var cat = new CatalogClass();
            cat.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = d:\\Test.mdb; Jet OLEDB:Engine Type=5");

            Marshal.ReleaseComObject(cat);
            cat = null;
            GC.Collect();
        }
        catch (FileNotFoundException e)
        {
            throw new FileNotFoundException("El archivo no se encuentra", e);
        }
        catch (COMException e)
        {
            throw new COMException(connStr + e.Message);
        }
        catch (Exception e)
        {
            throw new Exception(connStr, e);
        }

代码在 cat.Create() 行中失败。真正奇怪的是,在我的本地开发人员计算机上它工作正常,但在生产服务器中却不能...这不是写入权限问题,因为我尝试在问题行之前生成一个随机文件并工作完美。 COMException消息只是“未指定错误”HResult:-2147467259

服务器操作系统是Windows 2008 32位。我认为这是服务器配置问题,但你能给我一些说明吗?我不知道我还能做什么...

最佳答案

如果您在 64 位计算机上部署应用程序,您的代码无法通过 JET.OleDB.4.0 使用 ADOX
如果是这种情况,那么快速解决方案可能是将目标架构更改为 x86。

否则您可以尝试在目标计算机上下载并安装 64 位版本的 Microsoft Access Database Engine驱动程序,但我不知道他们是否支持ADOX。您还需要更改连接字符串

关于c# - 无法使用 ADOX 创建 Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079418/

相关文章:

c# - Linq 和 EntityFramework 4 具有多个内部连接和嵌套子查询

c# - 在其他类中组合一个类的对象时如何进行验证?

mysql - 如何将此 Access 查询转换为 mySQL 查询?

sql-server - 将 ms access 驱动的站点从 sql server 移动到 jabry.com - 连接字符串问题

c# - ADO.NET 创建链接表的方法

c# - 引用 ADOX 模块编译代码时出现 ADOX 错误

c# - asp.net core web api无法从客户端发送对象

c# - 如何正确检查 ILogger.LogCritical 是否已使用 NSubstitute 调用?

java - 使用 JCreator 将 Java 连接到 MS Access