我在 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/