基于服务的连接在不同计算机上更改的字符串

时间:2016-01-04 16:26:30

标签: c# connection-string

我有一个基于服务的数据库,默认连接字符串是

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


非常感谢!

2 个答案:

答案 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)

我建议将其保存在配置文件中,然后在想要更改数据库路径时从配置中更改用户名