当我向程序添加数据库时,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="Data Source=|DataDirectory|\PlayerTeam.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
我试图让用户选择他们想要打开的数据库。如何以编程方式修改连接字符串而不丢失关联的数据集和tableadapter?
提前致谢:)
答案 0 :(得分: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"
并允许用户选择他想要使用的连接字符串。
另一方面,。如果您的数据库在应用程序运行之前手动添加 处理起来会更容易,因为您只需将数据结构中的连接字符串保存为数组并调用所需连接即可使用
这是我从你的问题中找到的