C# 在Dropdownlist中显示不同的服务器、数据库和表名
在我的C#程序中,我有3个下拉列表C# 在Dropdownlist中显示不同的服务器、数据库和表名,c#,sql-server,C#,Sql Server,在我的C#程序中,我有3个下拉列表 在dropdownlist 1中,我必须显示所有SQL server名称 该服务器名称下的所有数据库名称都应显示在 下拉列表2 在dropdownlist 3中,该选定项下的所有表名 数据库必须显示。 我想知道如何为此写入连接字符串,因为可能有许多服务器、数据库和表。我无法为它们中的每一个写入连接字符串。我需要写入一个连接字符串,根据所选的dropdownlist值获取数据。 我使用if-else语句尝试了下面的代码,它工作正常。但是我不想使用if-else语
string Server1 = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
string Server2 = ConfigurationManager.ConnectionStrings["DBCS1"].ConnectionString;
string Server3 = ConfigurationManager.ConnectionStrings["DBCS2"].ConnectionString;
string Server4 = ConfigurationManager.ConnectionStrings["DBCSLocal1"].ConnectionString;
private string Server;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedValue == @"Anusql\SQLEXPRESS")
{
Server = Server1;
}
else if (DropDownList1.SelectedValue == @"CAB3RMIGGA\SQLEXPRESS")
{
Server = Server2;
}
else
{
Server = Server3;
}
SqlConnection sqlconn = new SqlConnection(Server);
SqlCommand cmd = new SqlCommand("SELECT * FROM SYS.databases", sqlconn);
sqlconn.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet sd = new DataSet();
sda.Fill(sd);
DropDownList3.DataSource = sd;
DropDownList3.DataTextField = "name";
DropDownList3.DataValueField = "name";
DropDownList3.DataBind();
DropDownList3.Items.Insert(0, new ListItem("--Select--", "0"));
sqlconn.Close();
}
你对解决这个问题有什么想法?到目前为止,你一句话也没说你试过/想到了什么?下面是我关于实施的建议(你会看到问题,因为我们不知道你知道什么,你可以使用什么) 我希望下面的类保存我的所有配置
internal class ProjectEnvironment
{
public string Name {get; set;}
public List<SQLServer> Servers {get; set;}
}
internal class SQLServer
{
public string Name {get; set;}
public string HostName {get; set;}
public int Port {get; set;}
public List<Database> Databases {get; set;}
}
internal class Database
{
public string Name {get; set;}
public List<string> Tables {get; set;}
}
内部类项目环境
{
公共字符串名称{get;set;}
公共列表服务器{get;set;}
}
内部类SQLServer
{
公共字符串名称{get;set;}
公共字符串主机名{get;set;}
公共int端口{get;set;}
公共列表数据库{get;set;}
}
内部类数据库
{
公共字符串名称{get;set;}
公共列表表{get;set;}
}
假设这个类有一个XML序列化的版本——填充了您公司/项目拥有的所有可能的SQL Server详细信息。该序列化版本将被存储并用作我的配置。在程序启动时,我将找到config.xml文件,将其序列化到前面提到的类结构中,然后将控件绑定到相关属性。到目前为止,您尝试了什么。也许你可以使用反射?也许类似于