我有一个基于服务的数据库,默认连接字符串是
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\James\OneDrive\Miller Veneers\Program\Current\HandHeld\SQLLibrary\MyDatabase.mdf;Integrated Security=True";
哪个有效。我的问题是,当我将其更改为动态时,我可以在另一台计算机上使用它停止工作。
我试过了
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) +
@"\MyDatabase.mdf;Integrated Security = True;");
和
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=/MyDatabase.mdf;Integrated Security = True;
非常感谢!
答案 0 :(得分:1)
你的两个例子都有点不对劲。
我猜你的第二次尝试是错误的,因为斜杠(/)而不是反斜杠()。
此外,我认为走上你的道路可能会导致不正确的结果。如果您的代码位于程序集缓存中的DLL中,则会获得程序集缓存的路径,而不是应用程序的位置。也许你应该考虑GetEntryAssembly
。
尝试使用Path.Combine(...)
将动态路径与文件名组合,如下所示:
string connectionString =
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
System.IO.Path.Combine(
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().GetName().CodeBase),
"MyDatabase.mdf") +
@";Integrated Security = True;"
答案 1 :(得分:0)
我建议将其保存在配置文件中,然后在想要更改数据库路径时从配置中更改用户名