【问题标题】:Distributing an Access database with a Winforms app使用 Winforms 应用程序分发 Access 数据库
【发布时间】:2013-01-09 17:47:52
【问题描述】:

我有一个 C# 应用程序,它可以读取和写入 Access 数据库。每个用户有一个数据库文件。我的目的是在启动时检查用户的“我的文档”文件夹中是否存在 MDB,如果未找到 MDB,则将模板 MDB 复制到该文件夹​​。

我已经将模板 MDB 添加到我的项目中,并将其放在我称为 Packaged 的自己的文件夹中。但是,我无法从代码中引用此 Packaged 文件夹,因为它没有出现在 IntelliSense 中。

我的意图是使用 File.Copy 复制 MDB,但我无法确定文件路径,因为我无法在代码中访问 MDB。如果它只是打包在.exe中,大概它不会有文件路径?

如果可能的话,我宁愿不分发单独的 MDB,最好的方法是什么?

【问题讨论】:

    标签: c# winforms ms-access


    【解决方案1】:

    过去我通过将 MDB 设为嵌入式资源并根据需要将其写入磁盘(如果不存在)来完成此操作。

    Here is more info on writing an embedded resource to file.

    【讨论】:

    【解决方案2】:

    您几乎必须使用模板 MDB 的环境路径之一。像 ApplicationData 或 Documents and Settings\Username\Local Settings\ 或其他之一。本地用户数据是用户特定数据的最佳方式。在最开始的代码中,第一次运行时判断该文件是否存在。如果存在则复制模板,如果不存在则不复制。

    这样,用户就拥有完整的读写访问权限以及复制文件或复制文件的能力,而不会出现安全问题。这些环境变量可以通过

      Environment.GetEnvironmentVariable  
    

    您还可以有一个注册表设置,并为该特定应用程序读取和写入注册表,该应用程序具有一个简单的 DatabaseAvailable 键,并切换它是或否。

    您也可以将 MDB 作为资源嵌入,然后根据需要进行编写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多