存储MSSQL LocalDB for Application

时间:2015-06-30 10:11:39

标签: c# .net localdb wpd

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

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

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

我的App资源中有一个预先制作的LocalDB.mdf文件,我想在第一次运行时将其复制到此/Appdata/Local/文件夹中,但我看到Access被拒绝错误。

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

以下是代码:

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

另外,我是否正确地采取了这种方式?

1 个答案:

答案 0 :(得分:2)

这一行

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