我在网页上有3个textbox控件,这3个控件是输入查询的条件。那么我的sql语句应该如何写呢?有什么更简单的办法吗?这3个控件不一定都有值的?我不想用if条件来判断?各位有什么好的方法吗?谢谢了。

解决方案 »

  1.   

    动态拼接sql,注意防SQL注入,给一段参考代码:CREATE PROCEDURE [dbo].[Log_OperLog_GetOperLogCount]
    @OperEmployeeId varchar(20),
    @OperModuleId int,
    ……
    AS
    DECLARE @sql nvarchar(4000);
    SET  @sql = 'SELECT count(*) FROM Log_Oper 
    WHERE 1=1'
    + case when @OperEmployeeId is not null then ' and OperEmployeeId=@OperEmployeeId' else '' end
    ……
    EXEC sp_executesql 
    @sql,
    N'@OperEmployeeId varchar(20), @OperModuleId int, @OperObjectId varchar(1000), @OperTypeName varchar(20), @OperTimeStart datetime, @OperTimeEnd datetime', --必须要加'N'
    @OperEmployeeId,
    @OperModuleId,
    ……
    GO
      

  2.   

    這個問題有點不明確.比如你采用什麼樣的數據庫訪問組件.如:ORM,Sqlhelper.....等...
    不過常見的處理有:
    string sqlWhere="";
    //當文本框不為空時
    if(!string.IsNullOrEmpty(txtA.text.Trim()))
    {
        sqlWhere += " And a=@A";
    }
    .......
    return Data.GetDataSetBySql("Select * From 表 Where 1=1 "+sqlWhere +" Order By Id Desc");
      

  3.   

    如果用存儲過程解決的話,則在存儲過種中形成sql的話法.用EXEC(@sql)
      

  4.   

    又不能保证三个条件都有值
    这个如果不判断 你怎么知道sql是根据什么条件来查询的呢
    如果有次方法  我倒是很想见识一下
      

  5.   

    又不能保证三个条件都有值
    这个如果不判断 你怎么知道sql是根据什么条件来查询的呢
    如果有次方法  我倒是很想见识一下
      

  6.   

    1 在后台代码中拼sql的条件,这个很简单 根据文本框是否为空来拼2 在数据库中判断create Table Users
    (
        id int,
        name nvarchar(20),
        age int
    )create proc sp_SGetUserInfo
    (
      @Name nvarchar(20),
      @Age int
    )
    as
    select 
        *
    from
        Users
    where
        (@Name='' or name=@Name)  --参数为空 就不执行了
    and
        (@Age='' or age=@Age)
      

  7.   

    简单的写一下,你照着这个来就可以了,不过用了ifstring str1=this.TextBox1.text.Trim().ToString();
    string str2=this.TextBox2.text.Trim().ToString();
    string str3=this.TextBox3.text.Trim().ToString();
    //假设处理页为search.aspx
    //你在按钮上的处理页写成:"search.aspx?str1="+str1+"&str2="+str2+"&str3="+str3
    //下面是search.aspx页的部分代码string s1,s2,s3;
    string str1,str2,str3;
    str1=Request.QueryString["str1"].ToString();
    str2=Request.QueryString["str2"].ToString();
    str3=Request.QueryString["str3"].ToString();
    if(str1=="" || str1==null)
    {
     s1="";
    }
    else
    {
     s1=" and 字段名 like '"+str1+"'";
    }
    if(str2=="" || str2==null)
    {
     s2="";
    }
    else
    {
     s2=" and 字段名 like '"+str2+"'";
    }
    if(str3=="" || str3==null)
    {
     s3="";
    }
    else
    {
     s3=" and 字段名 like '"+str3+"'";
    }
    //然后把它们组合起来
    string sql="select * from tablename where id<>0";
    sql+=s1+s2+s3;