C# 为应用程序存储MSSQL LocalDB
我一直在使用LocalDB.mdf文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序 经过研究,存储此类文件的最佳位置似乎是C# 为应用程序存储MSSQL LocalDB,c#,.net,localdb,wpd,C#,.net,Localdb,Wpd,我一直在使用LocalDB.mdf文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序 经过研究,存储此类文件的最佳位置似乎是/Appdata/Local/文件夹 如果LocalDB.mdf文件不存在或已被删除,我打算在其中创建一个新的LocalDB.mdf文件 我在我的应用程序资源中有一个预先制作的LocalDB.mdf文件,我想在第一次运行时将其复制到这个/Appdata/Local/文件夹中,但我看到一个访问被拒绝的错误 我可以为该文件夹创建一个空白文件 代码如下:
/Appdata/Local/
文件夹
如果LocalDB.mdf文件不存在或已被删除,我打算在其中创建一个新的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);
}
另外,我这样做对吗?这一行
if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
这可能是错误的。缺少反斜杠,最好使用路径。合并而不是字符串串联
最后,您希望写入文件而不是文件夹
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);