0

我对 ASP.Net C# 还是很陌生,我有这段代码可以正常工作。我在 web.config 文件中有多个连接字符串,我根据下拉列表的文本在它们之间切换。我希望对任何更整洁/更清洁的方法提出一些建议来存档它,而不是我在下面的内容(如果有的话)。谢谢!

 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();
            }
        }
    }


    }
4

4 回答 4

4

创建一个单独的函数并在其中编写所有业务逻辑,并根据下拉项获取连接字符串作为参数

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();
            }
       }
}
于 2015-10-27T09:55:44.530 回答
1

您正在编写相同的代码,多个时间可以通过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 */
于 2015-10-27T09:51:15.317 回答
0

您正在执行以下操作两次:

       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。

于 2015-10-27T09:51:04.497 回答
0

也许只是使用 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();
     }
  }

}
于 2015-10-27T09:54:05.307 回答