0

我有两个不同公司将使用的一个应用程序。我不想创建两个单独的应用程序,因为当我需要修复错误时,我必须在两者上都这样做,我可能会失去轨道。

与两家公司唯一不同的是域和数据库(连接字符串),换句话说就是独立的网络。如何让应用程序根据用户使用它的位置使用正确的连接字符串?例如,公司 A 或公司 B。我正在考虑使用文本或 .ini 文件来存储连接字符串。

有人可以帮忙或建议类似的东西吗?

提前致谢

4

4 回答 4

0

可能这可以帮助你:

最好使用下拉菜单在登录页面上选择公司以与用户映射。并且根据用户和公司映射,您可以选择连接字符串。使用 if else 子句。

于 2013-09-30T07:48:33.903 回答
0

好吧,假设两家公司的每台机器都属于不同的域(应该是),那么您可以使用检索域名

Environment.UserDomainName

然后动态构建连接字符串,例如在应用程序启动时

static class Program
{
     public static string CompanyConnectionString;

     static void Main()
     {
          string domain = Environment.UserDomainName;
          SqlConnectionStringBuilder sbc = new SqlConnectionStringBuilder();
          if(domain == "CompanyA")
          {
               sbc.DataSource = "ServerForComapanyA";
               sbc.InitialCatalog = "DataBaseCompanyA";
               ... etc ... 
               ... other properties of class SqlConnectionStringBuilder ...
               ... to exactly compose the connection string required
          }
          else if(domain == "CompanyB")
          {
               sbc.DataSource = "ServerForComapanyB";
               sbc.InitialCatalog = "DataBaseCompanyB";
               ... etc ... 
               ... other properties of class SqlConnectionStringBuilder ...
               ... to exactly compose the connection string required
          }
          else
          {
               MessabeBox.Show("Machine domain name not recognized. Unable to connect");
          }
          Program.ConnectionString = sbc.ConnectionString;
          ....

现在程序的每个类都可以引用启动类并使用Program.CompanyConnectionString.
当然,这项工作也可以转移到实用程序类来解决对主类的依赖

SqlConnectionStringBuilder
Environment.UserDomainName

刚刚意识到我不知道您是否使用 Sql Server,但ConnectionBuilder类也可用于 OleDb、Odbc、Oracle 并且可能每个其他主要提供商都有相同的

于 2013-09-30T08:24:07.633 回答
0

我认为您可以尝试使用第一个连接字符串连接到数据库。如果失败,请使用其他字符串。这种方法可能会出现一些意想不到的问题。

于 2013-09-30T08:04:17.997 回答
0

使用 app.config。在部署时的构建脚本中,根据部署将被运送到谁来更新 app.config 中的连接字符串。

于 2013-09-30T09:25:43.950 回答