在我的C#程序中,我有3个下拉列表。
在下拉列表1中,我必须显示所有SQL服务器名称。
该服务器名称下的所有数据库名称都应显示在 下拉列表2.
在下拉列表3中,所选的所有表名都在其中 数据库应该要显示。 我想知道如何为此编写连接字符串,因为可能有许多服务器,DB和Tables.I无法为每个服务器写入连接字符串。我需要编写一个连接字符串,根据提取数据选定的下拉列表值。
我使用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();
}
答案 0 :(得分:0)
你对解决这个问题有什么看法?到目前为止,您还没有说过您尝试/想过的内容?这是我关于实施的建议(&你会看到问题,因为我们不知道你知道并允许使用的所有东西)。
我希望以下类能够保留所有配置
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;}
}
假设此类的XML序列化版本 - 填满了您公司/项目所具有的所有可能的SQL Server详细信息。该序列化版本将被存储并用作我的配置。在程序启动时,我将找到config.xml文件将其序列化为上述类结构,然后将控件绑定到相关属性。