【问题标题】:Help deploying C# application connected to an Access database帮助部署连接到 Access 数据库的 C# 应用程序
【发布时间】:2010-07-19 23:26:00
【问题描述】:

我制作了一个连接到 Access 数据库(.mdb 文件)的小应用程序。其他想要使用我的应用程序的用户是否也需要安装 Microsoft Access?如果是这种情况,有没有办法通过用户安装一些免费包来绕过这个要求?

我已经对此进行了一段时间的研究,但似乎无法得到任何答案。非常感谢任何帮助。

【问题讨论】:

    标签: c# ms-access deployment


    【解决方案1】:

    没有人明确回答您的问题。如果您使用的是 MDB 格式,则不需要分发 Access,因为 Jet 4 安装在从 Windows 2000 开始的所有 Windows 副本上。

    但是,如果您要编译的不是 32 位,则会遇到问题,在这种情况下,您需要下载为 Access 2010 64 创建的 Jet/ACE 的 64 位版本-位并将其包含在您的应用中。

    【讨论】:

    • 我实际上仍然无法连接到我的 .mdb 数据库。我在没有安装 Access 的 32 位机器上进行测试。如果默认情况下在所有副本上都安装了 Jet 4,这让我认为我的应用程序应该直接开箱即用。我也尝试下载 Access Runtime,但这也无济于事。我认为连接到数据库的错误与 .mdb 文件未经认证的安全问题有关。我还没有完全解决这个问题。
    • 好吧,你可以发布你的连接字符串。在安全方面,Jet 4 没有 A2007 引入的“受信任位置”概念,虽然 A2003 有“宏观安全”(“安全剧院”的另一个品牌),但这与 Jet db 引擎无关。有 3 个安全问题:NTFS 文件权限、Jet 用户级安全和数据库密码。最后一个是没有价值的,如果有一个数据库密码,你应该删除它,因为它没有任何用处。
    • 我的连接字符串是:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"somedb.mdb\""。我不确定这对你有多大帮助。我没有数据库密码,文件权限不应该是问题...
    • 你真的检查过 NTFS 权限吗?其次,您没有提到 Jet 用户级安全性。当您的连接字符串未指定工作组文件时,Jet 将使用默认工作组,而对于这个特定的 MDB 文件,这可能是错误的。
    • @David-W-Fenton:你为什么说数据库密码“一文不值”?没有它,它会阻止 DAO 和其他访问。
    【解决方案2】:

    尝试从 MS 下载新的 2010 Access database 可再发行组件。也可以在 64 位上运行。

    【讨论】:

      【解决方案3】:

      根据您使用的 MS Access 版本,您需要安装适当版本的 Microsoft Jet Engine。对于较旧的 Access 数据库,Jet Engine 与 MDAC 一起提供,但最近,它是 removed from the MDAC distribution。这是一个包含 MS Access 2007 可再发行组件链接的博客:Access Database Engine Redistributable。如果您使用不同版本的 Access,请寻找不同的可再发行组件。

      【讨论】:

      • 感谢您的快速回复——这正是我想要的。
      • 从 MDAC 中删除 Jet 的原因是因为 Jet 4 是从 Windows 2000 开始的操作系统的一部分(它由 Active Directory 使用)。情况仍然如此。现在的主要限制是 Jet 4 仅支持 32 位。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多