多“可选择”条件查询程序
2016-09-06 00:54
281 查看
动态SQL(where 1=1)
1、在数据查询方面:有很多种查询方式,比如某个条件可选中,某个条件不可选中,或者多种条件同时选中。然后依靠这些条件去查询得到需要的数据。2、所以所需要的查询语句,随着查询条件的不断改变,而使用不同的查询语句。
那么为了简便,如何把“众多的查询语句”结合到一条查询语句呢?
在这里我使用了动态sql语句,使用where 1 = 1
代表永真条件。
用一个实例说明:
查询条件一:查询时间,无选择条件。
查询条件二:查询时间,单个条件。
查询条件三:查询时间,多个条件。
查询条件四:查询时间,全部条件。
必要条件:选中查询时间是必须。
其他多个可选择条件。
#region 动态SQL object var1 = ""; object var2 = ""; object var3 = ""; object var4 = ""; object var5 = ""; object var6 = ""; object var7 = ""; object var8 = ""; object value1 = ""; object value2 = ""; object value3 = ""; object value4 = ""; object value5 = ""; object value6 = ""; object value7 = ""; object value8 = ""; object[] Tableee = new object[8] { this.DaLei.Text, this.MinChen.Text, this.GuiGe.Text, this.BianMa.Text, this.GonHuoShan.Text, this.JinHuoShang.Text, this.CanKu.Text, this.BeiZhu.Text }; object[] Tableet = new object[8] { "商品大类", "商品名称", "商品规格", "商品编码", "供货商", "进货人", "仓库", "备注" }; for (int i = 0; i < 1; i++) { //检测是否有数据,有数据直接赋值进变量中 if (this.DaLei.Text != "") { var1 = Tableet[0]; value1 = Tableee[0]; } if (this.MinChen.Text != "") { var2 = Tableet[1]; value2 = Tableee[1]; } if (this.GuiGe.Text != "") { var3 = Tableet[2]; value3 = Tableee[2]; } if (this.BianMa.Text != "") { var4 = Tableet[3]; value4 = Tableee[3]; } if (this.GonHuoShan.Text != "") { var5 = Tableet[4]; value5 = Tableee[4]; } if (this.JinHuoShang.Text != "") { var6 = Tableet[5]; value6 = Tableee[5]; } if (this.CanKu.Text != "") { var7 = Tableet[6]; value7 = Tableee[6]; } if (this.BeiZhu.Text != "") { var8 = Tableet[7]; value8 = Tableee[7]; } //检测是否有数据,无数据均赋值为1 if (this.DaLei.Text == "") { var1 = 1; value1 = 1; } if (this.MinChen.Text == "") { var2 = 1; value2 = 1; } if (this.GuiGe.Text == "") { var3 = 1; value3 = 1; } if (this.BianMa.Text = 4000 = "") { var4 = 1; value4 = 1; } if (this.GonHuoShan.Text == "") { var5 = 1; value5 = 1; } if (this.JinHuoShang.Text == "") { var6 = 1; value6 = 1; } if (this.CanKu.Text == "") { var7 = 1; value7 = 1; } if (this.BeiZhu.Text == "") { var8 = 1; value8 = 1; } } #endregion
以上是获取窗体可选择数据的代码,
有数据的文本框直接赋值数据到value变量中。
无数据的文本框直接赋值为1,也是在value变量中。
动态sql语句生成完毕后,进行数据查询
if (this.SuoYouShiJian.Checked) { strselect = "select 商品大类,商品名称,商品规格,商品编码,进货日期,进货数量,进货单价,合计,已付金额,欠款金额,供货商,进货人,仓库,备注 from CaiGou where " + var1.ToString() + "='" + value1.ToString() + "' and " + var2.ToString() + "='" + value2.ToString() + "' and " + var3.ToString() + "='" + value3.ToString() + "' and " + var4.ToString() + "='" + value4.ToString() + "' and " + var5.ToString() + "='" + value5.ToString() + "' and " + var6.ToString() + "='" + value6.ToString() + "' and " + var7.ToString() + "='" + value7.ToString() + "' and " + var8.ToString() + "='" + value8.ToString() + "'"; da = new SqlDataAdapter(strselect, conn); da.Fill(ds); } else if (this.AnReQi.Checked) { strselect = "select 商品大类,商品名称,商品规格,商品编码,进货日期,进货数量,进货单价,合计,已付金额,欠款金额,供货商,进货人,仓库,备注 from CaiGou where " + var1.ToString() + "='" + value1.ToString() + "' and " + var2.ToString() + "='" + value2.ToString() + "' and " + var3.ToString() + "='" + value3.ToString() + "' and " + var4.ToString() + "='" + value4.ToString() + "' and " + var5.ToString() + "='" + value5.ToString() + "' and " + var6.ToString() + "='" + value6.ToString() + "' and " + var7.ToString() + "='" + value7.ToString() + "' and " + var8.ToString() + "='" + value8.ToString() + "' and 进货日期 = '" + this.DataTime1.Text + "'"; da = new SqlDataAdapter(strselect, conn); da.Fill(ds); }
相关文章推荐