最终用户计算机上的C#数据库访问需要Microsoft Access吗?

时间:2009-11-06 15:53:20

标签: c# ms-access ms-office oledb unauthorized

愚蠢的问题,也许。

我在我的机器上开发了一个应用程序,它使用Microsoft Access数据库(.mdb)访问某些信息,并使用OLEDb填充监控数据表。

应用程序在我的机器上运行正常,但是当我将该版本放在测试机器上(没有MS Access)时,它会崩溃。有趣的是,如果我要在测试机器上启动应用程序,并且数据库文件名只是重命名,那么它会加载,就像它应该没有数据一样。

我似乎得到了一个UnauthorizedAccessException异常,这进一步引起了我的困惑。

开发机器和我正在测试的机器都安装了.NET 3.5。

我希望在我的问题上回答'不是',但是,测试机器是否需要安装MS Access?

此致

6 个答案:

答案 0 :(得分:4)

尝试下载Office连接组件here。这将允许您在不安装Access的情况下读取和创建Access数据库。

答案 1 :(得分:2)

它不需要MS Access,但您需要为您的Access版本提供所需的驱动程序。您可能需要执行测试版本,以便向日志输出确切的异常和消息。

答案 2 :(得分:2)

确保安装了最新的Jet 4 OLEDB驱动程序。如果您从网络共享运行应用程序(然后它以受限制的权限运行),则可能还有问题。

答案 3 :(得分:1)

你说你得到了UnauthorizedAccessException。我首先检查.mdb文件和位置的读/写权限。

如果您是作为服务运行,请记住它们在更受限制的帐户下运行。

答案 4 :(得分:1)

您不需要Access本身。您需要使JET驱动程序和相关文件至少与开发计算机上的驱动程序和关联文件一样最新 - 如果您要回收旧机器以用于测试可能是问题。

但是,这听起来像是权限问题,无论是在数据库文件本身还是在文件内部,如果您使用的是Access的安全机制。

答案 5 :(得分:1)

事实证明这个问题是一个硬件问题。当我搬到新机器时,我使用的卡上的一个串口已经消失了。

事实证明问题不是数据库相关的,因为异常会建议。

虽然提出了一些关于JET的有趣观点,这对于有数据库访问问题的人来说非常有用。

感谢您的帮助。