ASP.NET C# 根据下拉列表更改连接字符串
ASP.NET C# Changing connection strings based on drop down list
我对 ASP.Net C# 还是很陌生,我有这段代码可以正常工作。我在 web.config 文件中有多个连接字符串,我根据下拉列表的文本在它们之间切换。我希望得到任何 neater/cleaner 方法的一些建议来存档这个而不是我下面的(如果有的话)。谢谢!
protected void search_ClickALL(object sender, EventArgs e)
{
if (ddlALL.SelectedItem.Text == "ENWL")
{
using (
SqlConnection conn =
new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
else if (ddlALL.SelectedItem.Text == "NW")
{
using (
SqlConnection conn =
new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
}
您正在执行以下操作两次:
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
而是将其作为一个函数并将您的 SQLConnection conn 作为参数传递给该函数。
同样在使用using语句时,也不需要关闭conn。
您多次编写相同的代码可以通过 Switch 案例
一次完成
string ConnectionString;
switch (comboBox1.SelectedIndex)
{
case 0:
ConnectionString = ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString
break;
case 1:
ConnectionString = ConfigurationManager.ConnectionStrings["XYZ"].ConnectionString
break;
}
SqlConnection Con = new SqlConnection(ConnectionString);
Con.Open();
/*YOUR CODE */
也许只是使用 if 来选择连接字符串,因为其余的看起来是一样的。
protected void search_ClickALL(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ddlALL.SelectedItem.Text].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
创建一个单独的函数并将所有业务逻辑写入其中,并根据下拉项获取连接字符串作为参数
protected void search_ClickALL(object sender, EventArgs e)
{
if (ddlALL.SelectedItem.Text == "ENWL")
{
ShowData(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString.ToString());
}
else if (ddlALL.SelectedItem.Text == "NW")
{
ShowData(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString).ToString());
}
}
private void ShowData(string connectionstring)
{
using (
SqlConnection conn =
new SqlConnection(connectionstring))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
我对 ASP.Net C# 还是很陌生,我有这段代码可以正常工作。我在 web.config 文件中有多个连接字符串,我根据下拉列表的文本在它们之间切换。我希望得到任何 neater/cleaner 方法的一些建议来存档这个而不是我下面的(如果有的话)。谢谢!
protected void search_ClickALL(object sender, EventArgs e)
{
if (ddlALL.SelectedItem.Text == "ENWL")
{
using (
SqlConnection conn =
new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
else if (ddlALL.SelectedItem.Text == "NW")
{
using (
SqlConnection conn =
new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
}
您正在执行以下操作两次:
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
而是将其作为一个函数并将您的 SQLConnection conn 作为参数传递给该函数。
同样在使用using语句时,也不需要关闭conn。
您多次编写相同的代码可以通过 Switch 案例
一次完成 string ConnectionString;
switch (comboBox1.SelectedIndex)
{
case 0:
ConnectionString = ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString
break;
case 1:
ConnectionString = ConfigurationManager.ConnectionStrings["XYZ"].ConnectionString
break;
}
SqlConnection Con = new SqlConnection(ConnectionString);
Con.Open();
/*YOUR CODE */
也许只是使用 if 来选择连接字符串,因为其余的看起来是一样的。
protected void search_ClickALL(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ddlALL.SelectedItem.Text].ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}
创建一个单独的函数并将所有业务逻辑写入其中,并根据下拉项获取连接字符串作为参数
protected void search_ClickALL(object sender, EventArgs e)
{
if (ddlALL.SelectedItem.Text == "ENWL")
{
ShowData(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString.ToString());
}
else if (ddlALL.SelectedItem.Text == "NW")
{
ShowData(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString).ToString());
}
}
private void ShowData(string connectionstring)
{
using (
SqlConnection conn =
new SqlConnection(connectionstring))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn);
try
{
SqlParameter search = new SqlParameter();
search.ParameterName = "@JobnoALL";
search.Value = JobnoALL.Text.Trim();
cmd.Parameters.Add(search);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
gridviewALL.DataSource = dt;
gridviewALL.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (cmd.ExecuteScalar() == null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>");
}
conn.Close();
mpePopUpALL.Show();
}
}
}