C# 使用安装存储mdf文件的更好方法是什么

C# 使用安装存储mdf文件的更好方法是什么,c#,database,winforms,relative-path,appdata,C#,Database,Winforms,Relative Path,Appdata,我做了一个完美的应用程序,我必须为那个应用程序做一些补充。但我有一个localDB,这是我的问题,如何以及在哪里存储mdf文件。 我在谷歌上搜索过,但还没有找到解决方案 我尝试了两种解决方案 通过exe文件将mdf文件包括到安装文件夹中。 当我这样做时,程序启动并执行良好,数据库工作直到我有更新或插入命令,异常被抛出,表示数据库是只读的。我试着与管理员一起运行或更改权限,但仍然存在相同的问题 将mdf文件保存到mydocuments或appdata 这样,我通过VS installer创建了一个

我做了一个完美的应用程序,我必须为那个应用程序做一些补充。但我有一个localDB,这是我的问题,如何以及在哪里存储mdf文件。 我在谷歌上搜索过,但还没有找到解决方案

我尝试了两种解决方案

  • 通过exe文件将mdf文件包括到安装文件夹中。 当我这样做时,程序启动并执行良好,数据库工作直到我有更新或插入命令,异常被抛出,表示数据库是只读的。我试着与管理员一起运行或更改权限,但仍然存在相同的问题
  • 将mdf文件保存到mydocuments或appdata 这样,我通过VS installer创建了一个特殊的文件夹,并在那个里添加了mdf文件,但问题是我不知道如何创建相对连接字符串,因为它被设置为datadirectory
  • 
    

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

    您应该在用户可以访问的特定文件夹中以编程方式设置connectionstring,如下所示:

    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");
    

    您是否试图以一种迂回的方式询问如何将
    DataDirectory
    变量设置为特定路径?若有,已涵盖多次;;只需在搜索框中键入DataDirectory。如果你真的在问一个“最好的方式”,这是一个意见型的问题,很可能就这样结束了。
    File.Copy(Application.StartupPath + @"\your database.mdf", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\your folder\your app\your database.mdf");