通過拼接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;
            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM