安装时存储mdf文件的更好方法是什么

时间:2019-04-05 17:19:55

标签: c# database winforms relative-path appdata

我做了一个完美的应用程序,我必须对该应用程序进行安装。但是我有一个localDB,这是我的问题,如何以及在哪里存储mdf文件。 我已经在Google上进行了搜索,但是还没有找到解决方案。

我尝试了两种解决方案。

  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>

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

1 个答案:

答案 0 :(得分: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");