C#中的数据库连接

时间:2017-02-19 05:58:59

标签: c# sql-server database

我可以使用哪种方法/代码,每次将项目移动到另一台计算机时都不需要我更改连接字符串?

使用了2台具有不同服务器名称但具有相同数据库的计算机。

PC1:

static string ConnStr = "Server=DESKTOP-Q0BI1S3;Database=ISPROJ2;Trusted_Connection=True;";

PC2:

static string ConnStr = "Server=DESKTOP//SEGUERRA;Database=ISPROJ2;Trusted_Connection=True;";

尝试使用:Server =(localdb)

更新:使用localhost和(本地)与PC1工作正常,但这些不适用于PC2 see img

5 个答案:

答案 0 :(得分:3)

我不确定这是否适合您,但我工作的地方每个人都有自己的本地sql server实例,每个开发人员都在localhost上使用db。我们通过将数据库引用为点(localhost)来解决此问题。

"Server=.;Database=ISPROJ2;Trusted_Connection=True;"

此解决方案仅在所有开发人员都将其数据库安装为默认实例时才有效。

答案 1 :(得分:2)

See here.

这可能是您正在寻找的解决方案。使用主机名并将其附加到连接字符串。

我也相信你可以使用server=localhost;

答案 2 :(得分:0)

您可以使一台计算机作为服务器工作,并且每次使用相同的连接字符串连接到它。

这可能对您有所帮助: https://technet.microsoft.com/en-us/library/ms175483(v=sql.105).aspx

答案 3 :(得分:0)

可能有很多库可以解决这个问题,但是你可以做的最简单的方法就是在软件中确定运行软件的计算机:

static string GetConnectionString()
{
    switch(System.Environment.MachineName)
    {
        case "PC1": //TODO:Change this to the actual machine name!
            return "Server=DESKTOP-Q0BI1S3;Database=ISPROJ2;Trusted_Connection=True;";            
        case "PC1": //TODO:Change this to the actual machine name!
            return "Server=DESKTOP//SEGUERRA;Database=ISPROJ2;Trusted_Connection=True;";
    }
}

您还可以通过从web.config / app.config中读取它来使其更具动态性:

static string GetConnectionString()
{
    return ConfigurationManager.AppSettings["ConnectionString_" + System.Environment.MachineName];
}

这使它更具动态性,只要需要在新环境中运行,您就可以在web.config / app.config上添加新的连接字符串。

<appsettings>
    <add key="connectionstring_pc1" value="[pc1connectionstringhere!]"/>
    <add key="connectionstring_pc2" value="[pc2connectionstringhere!]"/>
</appsettings>

答案 4 :(得分:0)

您可以在此处找到所有SQL Server连接字符串选项。

https://www.connectionstrings.com/sql-server/

Standard Security
Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;

Trusted Connection
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Connection to a SQL Server instance
The server/instance name syntax used in the server option is the same for all SQL Server connection strings.

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;