【问题标题】:What is the better way to store mdf file with installation用安装存储 mdf 文件的更好方法是什么
【发布时间】:2019-04-05 17:19:54
【问题描述】:

我做了一个完美的应用程序,我必须为该应用程序进行安装。但是我有一个 localDB,并且存在我的问题,存储 mdf 文件的方式和位置。 我在谷歌上搜索过,但我还没有找到解决方案。

我尝试了两种解决方案。

  1. 通过 exe 文件将 mdf 文件包含到安装文件夹中。 当我这样做时,程序启动并正常执行,数据库工作,直到我有更新或插入命令,抛出异常,表示 db 是只读的。我尝试使用管理员运行或更改权限,但仍然存在同样的问题。
  2. 将 mdf 文件保存到 mydocuments 或 appdata 这样我通过VS安装程序创建特殊文件夹并在那里添加mdf文件,但问题是我不知道如何制作相对连接字符串,因为它设置为datadirectory。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <connectionStrings>

    <add name="Test1" connectionString=" Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Artikli.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

  </connectionStrings>

</configuration>

其他程序将其数据库存储在哪里?最好的方法是什么?

【问题讨论】:

  • 您是不是想迂回询问如何将DataDirectory 变量设置为特定路径?如果是这样,那已经被覆盖了很多次;只需在搜索框中键入 DataDirectory。如果您真的要求“最佳方式”,这是一个意见类型的问题,并且可能会被关闭。

标签: c# database winforms relative-path appdata


【解决方案1】:

您应该以编程方式在用户可以访问的某个特殊文件夹中设置您的连接字符串,如下所示:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\your folder\your app\your database.mdf";
        string connectionString = string.Format("Data Source = {0}; Integrated Security = True; providerName = System.Data.SqlClient;", path);

..当程序启动时,你应该验证这个数据库是否已经保存在指定的文件夹中,如果没有,你可以将数据库从安装文件夹复制到那里。

File.Copy(Application.StartupPath + @"\your database.mdf", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\your folder\your app\your database.mdf");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2017-02-01
    • 2012-05-26
    • 2013-02-25
    • 1970-01-01
    • 2018-07-04
    • 2012-09-02
    相关资源
    最近更新 更多