您的位置:首页 > 数据库

多“可选择”条件查询程序

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 实例 sql 动态sql