【问题标题】:Database Connection in C#C# 中的数据库连接
【发布时间】:2017-07-08 12:40:03
【问题描述】:

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

一直在使用 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

【问题讨论】:

  • 配置文件?注册表值?这就是 99% 的应用程序的工作方式。
  • 使用 localhost 代替 PC 名称。

标签: c# sql-server database


【解决方案1】:

您将在此处找到所有 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;

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      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】:

        See here.

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

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

        【讨论】:

        • 尝试对 PC1 使用 'localhost' .. 工作正常.. 但使用 PC2 我没有。我得到这个错误。 see img
        • 您是否尝试过附加主机名?主机名应该复制上面的内容,例如 Server=DESKTOP//SEGUERRA; 如果没有,请将其打印出来并粘贴到 cmets 中。我们会弄清楚的。 =) 附带说明一下,您应该将代码包装在 try{}catch(SQLException e){} 中,这样当您尝试连接时程序不会崩溃,并且没有任何东西可以连接。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-09-15
          • 2016-10-03
          • 2013-05-11
          • 1970-01-01
          • 1970-01-01
          • 2019-01-26
          • 2013-07-18
          • 1970-01-01
          相关资源
          最近更新 更多