C# SQL多条件查询拼接技巧

本文转载:http://blog.csdn.net/limlimlim/article/details/8638080

   #region 多条件搜索时,使用List集合来拼接条件(拼接Sql)

            StringBuilder sql = new StringBuilder("select * from PhoneNum");
            List<string> wheres = new List<string>();
            if (cboGroup.SelectedIndex != 0)
            {
                wheres.Add(" ptypeid=" + cboGroup.Text.Split('|')[0]);
            }

            if (txtSearchName.Text.Trim().Length > 0)
            {
                 wheres.Add(" pname like '%" + txtSearchName.Text.Trim() + "%'");
            }

            if (txtSearchCellPhone.Text.Trim().Length > 0)
            {
                 wheres.Add(" pcellphone like '%" + txtSearchCellPhone.Text.Trim() + "%'");
            }

            //判断用户是否选择了条件
            if (wheres.Count > 0)
            {
                string wh = string.Join(" and ", wheres.ToArray());
                sql.Append(" where " + wh);
            }
            #endregion

            #region 多条件搜索使用带参数的sql语句

            StringBuilder sql = new StringBuilder("select * from PhoneNum");
            List<string> wheres = new List<string>();
            List<SqlParameter> listParameter = new List<SqlParameter>();

            if (cboGroup.SelectedIndex != 0)
            {
                wheres.Add(" ptypeid=@typeid ");
                listParameter.Add(new SqlParameter("@typeid", cboGroup.Text.Split('|')[0]));
            }

            if (txtSearchName.Text.Trim().Length > 0)
            {
                wheres.Add(" pname like @pname ");
                //pname like '%乔%'
                //pname liek '%'+@pname+'%'
                listParameter.Add(new SqlParameter("@pname", "%" + txtSearchName.Text.Trim() + "%"));
            }

            if (txtSearchCellPhone.Text.Trim().Length > 0)
            {
                wheres.Add(" pcellphone like @cellphone ");
                listParameter.Add(new SqlParameter("@cellphone", "%" + txtSearchCellPhone.Text.Trim() + "%"));
            }

            //判断用户是否选择了条件
            if (wheres.Count > 0)
            {
                string wh = string.Join(" and ", wheres.ToArray());
                sql.Append(" where " + wh);
            }

            SqlHelper.ExecuteDataTable(sql.ToString(), listParameter.ToArray());
            #endregion

 

推荐C#中一套生成sql条件的类 

http://dotnet.chinaitlab.com/CSharp/746379_3.html

http://blog.csdn.net/dj1232090/article/details/2476224

http://blog.sina.com.cn/s/blog_3d7bed6501000c85.html

 

列表查询组件代码, 简化拼接条件SQL语句的麻烦

http://www.cnblogs.com/wuhuacong/archive/2007/11/19/964100.html

 

多条件搜索分页的实现

http://www.cnblogs.com/dedeyi/archive/2013/03/13/2957790.html

时间: 2024-10-22 23:07:20

C# SQL多条件查询拼接技巧的相关文章

SQL 多条件查询几种实现方法详细介绍

SQL 多条件查询 以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 if (@addDate is not null) and (@name <> '') select * from table where addDate = @addDate and name = @name else if (@addDate is not null) and (@name ='') select * from t

SQL 多条件查询几种实现方法详细介绍_MsSql

SQL 多条件查询 以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 if (@addDate is not null) and (@name <> '') select * from table where addDate = @addDate and name = @name else if (@addDate is not null) and (@name ='') select * from t

sql 多条件查询的一种简单的方法

sql 多条件查询的一种简单的方法以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL如:我们要有两个条件,一个日期@addDate,一个是@name第一种写法是if (@addDate is not null) and (@name <> '')select * from table where addDate = @addDate and name = @nameelse if (@addDate is not null) and (@name ='')select * from 

sql多条件查询,如何高效组合多个条件

问题描述 sql多条件查询,如何高效组合多个条件 我想查询数据库,是条件查询,但是这个条件有可能比较多,比如有几百个条件,如何写一条sql语句能高效查询数据库中满足这些条件的数据呢? 例如,我想查询userid字段为a,b,c,d--等人的数据,这样写sql感觉效率很低 select * from TABLE where USERID=a or USERID= b or USERID=c-- 有什么方法能比较好的满足查询要求呢? 解决方案 用in不能实现吗?比如 select * from TA

多条件查询拼接sql语句如何防止sql注入

问题描述 假如有四个条件可以任意输入1到4个条件取交集求解 解决方案 解决方案二:引用楼主abc12346579的回复: 假如有四个条件可以任意输入1到4个条件取交集求解 你的"任意输入条件"是什么意思?如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么"注入"方式干什么?直接干就行了.解决方案三:你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论"如何防止盗窃"就没有意义了.解决方案四:在

SQL多条件查询,模糊查询,模糊多条件查询

临近毕业答辩,最近老有同学问多条件查询,模糊查询其实没那么复杂.别想的复杂了. 在企业应用程序开发中经常遇到,查询数据库的时候,查询的where条件可能不止一个,可能没有条件,也有可能至少一个或者多个条件,遇到这种情况,今天看到论坛上有人用C#的 if 语句拼接,这样解决可以是可以,不过显得太过累赘也没有必要,其实,一句固定的 sql 语句句型即可解决:  关于多条件查询 select * from t where (a = @a or @a is null) and (b = @b or @b

[技术点]SQL 多条件查询

网上有不少人提出过类似的问题:"看到有人写了WHERE 1=1这样的SQL,到底是什么意思?".其实使用这种用法的开发人员一般都是在使用动态组装的SQL.让我们想像如下的场景:用户要求提供一个灵活的查询界面来根据各种复杂的条件来查询员工信息,界面如下图: 界面中列出了四个查询条件,包括按工号查询.按姓名查询.按年龄查询以及按工资查询,每个查询条件前都有一个复选框,如果复选框被选中,则表示将其做为一个过滤条件.比如上图就表示"检索工号介于DEV001和DEV008之间.姓名中含

SQL多条件查询Sql语句

DECLARE @startIndex INT, --用来判断的变量 @ordertype NVARCHAR(500), --条件语句 @SqlBase NVARCHAR(500) --最终的sql语句 SELECT @startIndex=3 SELECT @ordertype=CASE --根据条件组合sql语句 WHEN @startIndex=1 THEN 'ORDER BY CM.GeneralID DESC ' WHEN @startIndex=2 THEN 'ORDER BY CM

sql多条件查询语句

如上图:三个文本可选项,那sql语句怎么写呢? 1.首先获取三个文本的值分别为Name,Age,Sex. 2.string sql="select * from 表 where 1=1"; 3.if(Name!="") { sql=sql+"and userName like '%" + Name + "%'"; } if(Age!="") { sql=sql+"and Age like '%&q