【问题标题】:Storing MSSQL LocalDB for Application为应用程序存储 MSSQL LocalDB
【发布时间】:2015-06-30 10:11:39
【问题描述】:

我一直在使用 LocalDB.mdf 文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序。

经过研究,存储此类文件的最佳位置似乎是在/Appdata/Local/ 文件夹中。

如果 LocalDB.mdf 文件不存在或已被删除,我打算在其中创建一个新文件。

我的应用程序资源中有一个预制的 LocalDB.mdf 文件,我想在第一次运行时将其复制到 /Appdata/Local/ 文件夹中,但我看到访问被拒绝错误。

我可以为该文件夹创建一个空白文件。

代码如下:

string appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string dvAppDataFolder = appDataFolder + @"\MyApp";
        AppDomain.CurrentDomain.SetData("DataDirectory", dvAppDataFolder);

        if (!Directory.Exists(dvAppDataFolder))
            Directory.CreateDirectory(dvAppDataFolder);

        if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
        {
            File.WriteAllBytes(dvAppDataFolder, LokiServer.Properties.Resources.newDB);
        }

另外,我这样做是否正确?

【问题讨论】:

    标签: c# .net localdb wpd


    【解决方案1】:

    这一行

    if (!File.Exists(dvAppDataFolder + "LocalDB.mdf")) 
    

    可能是错误的。缺少反斜杠,最好使用Path.Combine 而不是字符串连接。

    最后,你想写入文件而不是文件夹

     string fileName = Path.Combine(dvAppDataFolder,"LocalDB.mdf");
     if (!File.Exists(fileName))
     {
            File.WriteAllBytes(fileName, LokiServer.Properties.Resources.newDB);
     }
    

    你做得对吗?这取决于。如果您的应用数据应该为目标机器的每个用户分开保存,那么您是对的,但是如果您希望您的数据库可供该机器的所有用户使用,那么请使用

    string appDataFolder = Environment.GetFolderPath
                          (Environment.SpecialFolder.CommonApplicationData);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多