zoukankan      html  css  js  c++  java
  • 通过拼接SQL字符串实现多条件查询

    一、通过拼接SQL字符串的方法的好处是:

    1、方便查询条件的扩展。

    2、简化业务逻辑的判断。

    二、例子:

    1、界面设计

    2、点击查询的代码

            /// <summary>
            /// 按条件查询
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void BtSearch_Click_1(object sender, EventArgs e)
            {
                List<string> wherelist = new List<string>();
                List<SqlParameter> parametlist = new List<SqlParameter>();
                
                if (CbMzh.Checked)
                {
                    wherelist.Add("mzh=@mzh");
                    parametlist.Add(new SqlParameter("@mzh", TbMzh.Text));
                }
                if (CbXm.Checked)
                {
                    wherelist.Add("xm like '%'+@xm+'%'");
                    parametlist.Add(new SqlParameter("@xm", TbXm.Text));
                }
                if (CbJbmc.Checked)
                {
                    wherelist.Add("jbzd like '%'+@jbzd+'%'");
                    parametlist.Add(new SqlParameter("@jbzd", TbJbmc.Text));
                }
                if (CbJzlb.Checked)
                {
                    wherelist.Add("jzlb=@jzlb");
                    parametlist.Add(new SqlParameter("@jzlb", ComBoxJzlb.Text));
                }
                if (CbJzks.Checked)
                {
                    wherelist.Add("jzks=@jzks");
                    parametlist.Add(new SqlParameter("@jzks", TbJzks.Text));
                }
                if (CbJzys.Checked)
                {
                    wherelist.Add("jzys=@jzys");
                    parametlist.Add(new SqlParameter("@jzys", TbJzys.Text));
                }
                if (CbJzrq.Checked)
                {
                    wherelist.Add("jzrq between @start and @end");
                    string start = DpStart.Value.ToString("yyyy-MM-dd") + " 00:00:00";
                    string end = DpEnd.Value.ToString("yyyy-MM-dd") + " 23:59:59";
                    parametlist.Add(new SqlParameter("@start", start));
                    parametlist.Add(new SqlParameter("@end", end));
                }
                if (CbJbmcjqcx.Checked)
                {
                    wherelist.Add("jbzd = @jbzd");
                    parametlist.Add(new SqlParameter("@jbzd", TbJbmc1.Text));
                }
                string whereSql = string.Join(" and ", wherelist);
                string sql = "select mzh,xm,xb,csny,age,pcid,jzks,jzys,jbzd,zddm,gzdw,jtzz,lxfs,jzlb,jzrq,xy from his_mzjzrz";
                if (wherelist.Count > 0)
                {
                    sql = sql + " where " + whereSql + " order by jzrq desc";
                }
                else
                {
                    MessageBox.Show("请选择检索条件!");
                    return;
                }
                DataTable dt = MsSqlHelper.ExecuteDataTable(sql, parametlist.ToArray());
                MzrzGridView.DataSource = dt;
                toolStripStatusLabel2.Text = string.Format("共检索到{0}条记录", dt.Rows.Count.ToString());
                toolStripProgressBar1.Minimum = 0;
                toolStripProgressBar1.Maximum = dt.Rows.Count;
                for (int i = 0; i <= dt.Rows.Count; i++)
                {
                    toolStripProgressBar1.Value = i;
                }
    
            }
  • 相关阅读:
    [再寄小读者之数学篇](2014-10-27 无穷多个无穷小量相乘还是无穷小量么?)
    华中师范大学2012年数学分析考研试题参考解答
    本科时的课程与成绩
    2014 年第六届全国大学生数学竞赛预赛数学类试题参考答案
    [家里蹲大学数学杂志]第322期赣南师范学院数学竞赛培训第11套模拟试卷
    [再寄小读者之数学篇](2014-10-18 利用 Lagrange 中值定理求极限)
    和马有关的成语
    PL/pgSQL学习笔记之一
    PostgreSQL的 initdb 源代码分析之二十五
    PostgreSQL的 initdb 源代码分析之二十四
  • 原文地址:https://www.cnblogs.com/flywong/p/8341315.html
Copyright © 2011-2022 走看看