2

当我将数据库添加到程序中时,Visual Studio 会自动创建以下连接字符串:

 <connectionStrings>
    <add name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString" connectionString="Data Source=|DataDirectory|\PlayerTeam.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />
    <add name="PlayerTeamEntities" connectionString="metadata=res://*/edmPlayerTeam.csdl|res://*/edmPlayerTeam.ssdl|res://*/edmPlayerTeam.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|DataDirectory|\PlayerTeam.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

我试图让用户选择他们想要打开的数据库。如何以编程方式修改连接字符串而不丢失关联的数据集和 tableadapter?

提前致谢 :)

4

1 回答 1

1

您可以使用该方法从 App.Config 文件中调用连接字符串以用于数据连接或适配器

 public string GetConnectionStringByName()
        {
            string returnValue = null;
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Connection Name Here"];
            if (settings != null)
                returnValue = settings.ConnectionString;
            return returnValue;
        }

当您将新数据库添加到项目时,默认情况下它采用现有数据库的相同连接名称加上一个数字。因此,您可以将连接字符串作为变量,并在添加新数据库时将数字添加到其中。

Edit

通过考虑您将在语法上将数据库添加到您的项目中,然后如果您添加了一个新的数据库。它将采用该连接字符串的名称:

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString1" 

因为它在现有数据库名称的末尾添加了一个数字,所以您可以投资我提供的方法,添加指定的连接字符串类似这样的东西:

public string GetConnectionStringByName(int DB_Number)
        {
            string returnValue = null;
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Connection Name Here"];
            if (settings != null)
                returnValue = settings.ConnectionString+Convert.ToString(DB_Number);
            return returnValue;
        }

因为该DB_Number变量可以保存在一个XML文件中,以免在每次添加数据库时丢失和增加。

因此,如果您将新数据库添加到现有 1 连接名称应该是:

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString1" 

如果您添加了另一个数据库,DB_Number则将增加 1 以将连接名称更改为:

name="TeamSortingTool.Properties.Settings.PlayerTeamConnectionString2" 

并使用户能够选择他想要使用的连接字符串。

另一方面 。如果您的数据库在应用程序运行之前手动添加。处理起来会更容易,因为您只需将连接字符串作为数组保存在数据结构中并调用想要使用的连接

这就是我从你的问题中得出的结论

于 2012-08-29T21:20:10.003 回答