由于条件太多,做起来很麻烦.
现在的做法是判断输入条件的输入框是否为空来确定这个条件是不是起作用,如果输入框有输入的话在生成SQL语句的时候就加入此条件.现在有一个问题是在什么时候加上where关键字呢,如果在判断是否加上最后一个条件的时候先得判断前面的条件输入框是不是为空.这样做起来很费事的.
哪位有好的方法呢,提供现成例子的给高分

解决方案 »

  1.   

    CREATE PROCEDURE  Procedure
     @AA NVARCHAR(30)
    ,@BB INT
    AS
    DECLARE @WhereStr NVARCHAR(1000)
    SELECT @WhereStr=''
    IF (@AA <>'')
    BEGIN
      SELECT @WhereStr = @WhereStr + ' AND AA = ''' + rtrim(@AA) + ''''
    END
    IF (@BB<>0)
    BEGIN
      SELECT @WhereStr = @WhereStr + ' AND BB= ''' + CAST(@BB as nvarchar) + ''''
    END
    EXEC ('SELECT * FROM Table WHERE  2>1 ' + @WhereStr)
      

  2.   

    string sql = "select * from table1 where name like '%" + TextBox1.Text + "%'";
      

  3.   

    string sql1 = "select * from abc ";
    string condition="";
    if(this.TextBox1.Text.Trim() != "")
       condition += "and f1='" + this.TextBox1.Text.Trim() + "' ";
    else if(this.TextBox2.Text.Trim() != "")
       condition += "and f2='" + this.TextBox2.Text.Trim() + "' ";
    .......
    if(condition.Length != 0)
    {
       condition = "where " + condition.SubString(3,condition.Length-3);
    }
    string strSQL = sql1 + condition;
      

  4.   

    如果你不想用模糊查询,其实可以改变一下规则,默认值为'%',用户不输入任何条件的时候那就查不到;
    string sql = "select * from table1 where name like '" + TextBox1.Text + "'";
    这样的规则很多软件都采用,例如CSDN,又如oracle的CRM,...有它的好处,这里就不深究了
      

  5.   

    同意Eddie005(暴走005) 的观点
      

  6.   

    写一个方法,传输入框的内容进去,生成sql条件,这样就放到一个地方做了啊——一点小小的意见
      

  7.   

    呵呵,上面几位说得没有一个多字段查询的要求,而事实上多字段查询就是这么麻烦。比如说数值型的数据,我们一般都是查询是>xx,或<xx。不能要求是=xx。如果是字符型的大多又是=xx.
    所以说,我的观点,简单的方法,没有:)