【问题标题】:Dynamically generate sql query based on [closed]基于[关闭]动态生成sql查询
【发布时间】:2014-09-01 15:52:17
【问题描述】:

我需要根据从下拉列表或文本框中输入或选择的值来填充网格视图。用户可能不会提及所有条件。我正在寻找一种解决方案,根据用户的选择动态生成数据库查询。

【问题讨论】:

  • if 语句通常适用于根据条件修改值。
  • 以下是标准 - 高于或等于百分比 - 文本框高于或等于 cgpa - 文本框经验(以月为单位) - 文本框 行业 - 下拉列表 专业 - 下拉 最高学位 - 下拉 学院 - 下拉 位置 - 下拉
  • @SupriyaParate:您似乎误解了 Stack Overflow 的目的。这不是一项免费的编码服务,它接受要求并为您发出代码。我们很乐意通过回答有关错误或意外行为的问题来帮助您编写任何代码。但是你必须真正付出一些的努力。

标签: c# sql


【解决方案1】:

试试这个,你需要根据你的情况更改代码。

            StringBuilder sqlQuery;
            SqlConnection con = new SqlConnection(@"Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword; ");
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            string join = "";
            // textboxes
            if (TextBox_percentage.Text.Trim() != "")
            {
                sqlQuery.Append(join+" [percentage_column]>=@percentage");
                cmd.Parameters.AddWithValue("@percentage", TextBox_percentage.Text);
                join = " and ";

            }
            if (TextBox_cgpa.Text.Trim() != "")
            {
                sqlQuery.Append(join + " [cgpa_column]>=@cgpascore");
                cmd.Parameters.AddWithValue("@cgpascore", TextBox_cgpa.Text);
                join = " and ";
            }
            if (TextBox_experience.Text.Trim() != "")
            {
                sqlQuery.Append(join + " [experience_column]=@experience");
                cmd.Parameters.AddWithValue("@experience", TextBox_experience.Text);
                join = " and ";
            }
            // dropdowns, 'Default value'? Text/Value?
            if (dropdown_Industry.SelectedItem.Text != "Default Value")
            {

                sqlQuery.Append(join + " [Industry_column]=@Industry");
                cmd.Parameters.AddWithValue("@Industry", dropdown_Industry.SelectedItem.Text);
                join = " and ";
            }
            if (dropdown_Specialization.SelectedItem.Text != "Default Value")
            {

                sqlQuery.Append(join + " [Specialization _column]=@Specialization ");
                cmd.Parameters.AddWithValue("@Specialization ", dropdown_Specialization.SelectedItem.Text);
                join = " and ";
            }
            if (dropdown_Highest_degree.SelectedItem.Text != "Default Value")
            {

                sqlQuery.Append(join + " [Highest_degree_column]=@Highest_degree");
                cmd.Parameters.AddWithValue("@Highest_degree", dropdown_Highest_degree.SelectedItem.Text);
                join = " and ";
            }
            if (dropdown_College.SelectedItem.Text != "Default Value")
            {

                sqlQuery.Append(join + " [College_column]=@College");
                cmd.Parameters.AddWithValue("@College", dropdown_College.SelectedItem.Text);
                join = " and ";
            }
            if (dropdown_Location.SelectedItem.Text != "Default Value")
            {

                sqlQuery.Append(join + " [Location_column]=@Location");
                cmd.Parameters.AddWithValue("@Location", dropdown_Location.SelectedItem.Text);
                join = " and ";
            }

            cmd.CommandText = "Select * from table where " + sqlQuery.ToString();
            con.Open(); // try-catch-finally
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            con.Close();
            gridView.DataSource = dt;
            gridView.DataBind();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2015-11-15
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多