sql语句拼接

来源:互联网 发布:淘宝哪个买正品乔丹 编辑:程序博客网 时间:2024/05/16 14:10

        在组合查询是怎样用一个简单的方法,判断局部控件是否为空呢?

   if (cmbrelation1.Text == "") //第一个逻辑符号为空            {                Control[] arrcontrol = new Control[3];                arrcontrol[0] = cmbfields1;//第一行文本框的名字                arrcontrol[1] = cmboperator1;                arrcontrol[2] = txtcontext1;                //调用函数判断控件内容是否为空                bool falg;                falg = issomeempty(arrcontrol);                if (falg == true)                {                    MessageBox.Show("请将第一行信息填写完整");                    enGroupQuery = null;                    return;                }                enGroupQuery.debug = 1;            }


       用这个方法就可以了。

 

public bool issomeempty(Control[] arrcontrol)        {            bool flag;            int i = 0;            foreach (Control item in arrcontrol)            {                if (item.Text == string.Empty)                {                    i += 1;                }                else                {                }            }            if (i > 0)            {                flag = true;            }            else            {                flag = false;            }            return flag;        }

     组合查询时,我们把所有的信息用一个实体类装好,传递给d层

    

 //将参数传递给实体,调用重新的方法            enGroupQuery.fileds1 = ToName(cmbfields1.Text);            enGroupQuery.fileds2 = ToName(cmbfields2.Text);            enGroupQuery.fileds3 = ToName(cmbfields3.Text);            enGroupQuery.operator1 = cmboperator1.Text;            enGroupQuery.operator2 = cmboperator2.Text;            enGroupQuery.operator3 = cmboperator3.Text;            enGroupQuery.context1 = txtcontext1.Text.Trim();            enGroupQuery.context2 = txtcontext2.Text.Trim();            enGroupQuery.context3 = txtcontext3.Text.Trim();            enGroupQuery.relation1 = ToName(cmbrelation1.Text);            enGroupQuery.relation2 = ToName(cmbrelation2.Text);            // enGroupQuery.table = Getdtable();            enGroupQuery.table = Getdtable();            if (enGroupQuery == null)            {                return;            }            else            {                //调用外观层                Facade.GroupWorkFacade groupworkuser = new Facade.GroupWorkFacade();                DataTable table = groupworkuser.Groupworkway(enGroupQuery);


        然后返回的table就组合查询得到的信息了,不论是否所有的信息都填写完整,都赋值传递到D层。其中加了一个属性debug。

       在局部判空中,如果不为空,就赋值debug。

    尝试很多次用存储过程。但是没有成功,SQL语句只能在D层写了。以前在vb机房中,只是按着葫芦画瓢,不懂+“”+ 这个是什么意思,空不是什么都没有吗?原来不加空,有会使两个独立的单词合到一起。

      还有就是 string str = "select * from A where B=' " + value + " ' ";   ‘  “  + value +  ” ’  这样写是什么意思?这里value代表一个变量,如果直接在字符串中写变量,就会化成字符串了,我是刚刚才懂。

     调试,可视化文本,非常好用,大赞。我为什么刚刚知道它的好处?

     看一下D层。

  public DataTable  groupworkway(Entity.GroupQuery engroupquery)        {            string sql;            SQLHeper.sqlhelper sqlhelper = new SQLHeper.sqlhelper();//创建一个sqlHeper类对象            SqlParameter[] sqlParams = { new SqlParameter("@fileds1",engroupquery.fileds1 ),                                         new SqlParameter("@fileds2",engroupquery.fileds2 ),                                         new SqlParameter("@fileds3",engroupquery.fileds3 ),                                         new SqlParameter("@operator1",engroupquery.operator1 ),                                         new SqlParameter("@operator2",engroupquery.operator2 ),                                         new SqlParameter("@operator3",engroupquery.operator3 ),                                         new SqlParameter("@context1",engroupquery.context1 ),                                         new SqlParameter("@context2",engroupquery.context2),                                         new SqlParameter("@context3",engroupquery.context3),                                         new SqlParameter("@relation1",engroupquery.relation1 ),                                         new SqlParameter("@relation2",engroupquery.relation2 ),                                         new SqlParameter("@table",engroupquery.table )                                       };            string strl = engroupquery.table;            if (engroupquery.debug==1)            {                sql = @"SELECT * FROM " + engroupquery.table + " WHERE " + engroupquery.fileds1 + engroupquery.operator1 + "@context1";                //string str = "select * from A where B=' " + value + " ' ";                //sql = @"SELECT * FROM " + strl + " WHERE @fileds1 + '" + engroupquery.operator1 + "'+ @context1";                                    DataTable table = SQLHeper.sqlhelper.GetDataTable(sql, CommandType.Text, sqlParams);                 return table;            }            if (engroupquery.debug==2)            {                sql = @"SELECT * FROM " + strl + " WHERE " + engroupquery.fileds1 + engroupquery.operator1 + "@context1 " + engroupquery.relation1 + " " + engroupquery.fileds2 + engroupquery.operator2 + "@context2";               // sql = sql + engroupquery.relation1 + engroupquery.fileds2 + engroupquery.operator2 + "@context2";                DataTable table = SQLHeper.sqlhelper.GetDataTable(sql, CommandType.Text, sqlParams);                return table;            }            if (engroupquery.debug==3)            {                 sql = @"SELECT * FROM " + strl + " WHERE " + engroupquery.fileds1 + engroupquery.operator1 + "@context1 " + engroupquery.relation1 + " " + engroupquery.fileds2 + engroupquery.operator2 + "@context2";                 sql += " " + engroupquery.relation2 + " " + engroupquery.fileds3 + engroupquery.operator3 + "@context3";                 DataTable table = SQLHeper.sqlhelper.GetDataTable(sql, CommandType.Text, sqlParams);                 return table;            }
            else            {                return null;            }                              }


    

 

  

 

         

 

0 0