多条件查询的程序

而在对用户进行查询时,也可能会使用到多种条件的查询方式,如通过工号查询、通过姓名查询、通过性别查询、通过学历查询等。也有可能会通过多种条件的组合查询,如查学历是大专的女员工等。
对于这种查询情况,通常的作法是让用户输入查询条件,再进行SQL语句组合来进行查询。如让用户输入工号、姓名等,单击提交按钮之后,在后台获得这些信息,如以下代码所示:


代码如下:

//设置查询语句
string strSql = "SELECT * FROM [user] where UserState=1 ";
//如果用户名不为空则添加查询条件
if (UserName!="")
{
    strSql += "and (UserName'= "+UserName+"') ";
}
//如果性别不为空则添加查询条件
if (Sex!="")
{
    strSql += "and (Sex'= "+Sex+"') ";
}

在创建完SQL语句之后,执行该语句获得查询结果。
这种是使用得最多并且是最不安全的方法,因为这是最容易让别人SQL注入攻击的一个方式。
如果想要避免SQL注入攻击,可以将查询语句写在存储过程中,然后使用SqlParameter将参数传递给存储过程,但是,一个多条件查询的存储过程需要怎么写呢?
其实,这个存储过程并不难,可以使用以下方式:


代码如下:

CREATE PROCEDURE [dbo].[UserCheck]
@UserId varchar(50) = null,
@UserName varchar(20) = null,
@RealName varchar(20) = null,
@Sex bit = null,
@JobTitle varchar(50) = null,
@Organ varchar(50) = null,
@IDCardType smallint = null,
@IDCard varchar(50) = null,
@Mobile varchar(50) = null
AS
BEGIN
select * from [user]
where UserId like case when @UserId is null then UserId else @UserId end
and UserName like case when @UserName is null then UserName else @UserName end
and RealName like case when @RealName is null then RealName else @RealName end
and Sex = case when @Sex is null then Sex else @Sex end
and JobTitle like case when @JobTitle is null then JobTitle else @JobTitle end
and Organ like case when @Organ is null then Organ else @Organ end
and IDCardType = case when @IDCardType is null then IDCardType else @IDCardType end
and IDCard like case when @IDCard is null then IDCard else @IDCard end
and Mobile like case when @Mobile is null then Mobile else @Mobile end
END

(0)

相关推荐

  • 一个简单实现多条件查询的例子

    在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子.在本例中,我们要实现能够通过地理位置,物业类型,房屋价格,房屋面积及信息发布日期等多个条件查询到客户所需的资料.以下是实现过程. 查询条件界面(略): 查询文件(search.php) 一.生成查询语句: <? $conn=mysql_connect("localhost","root",""); $db=mysql_select_db("lingy

  • PHP实现多条件查询实例代码

    查询文件(search.php) 一.生成查询语句: 复制代码 代码如下: <? $conn=mysql_connect("localhost","root",""); $db=mysql_select_db("lingyun"); $query="select * from message where tradetype='".$tradetype."'"; //交易类型,如出租

  • 比较不错的asp单表单字段多条件查询

    用途:文章表内文章关键字查询 查询格式: 百度 google  百度好还是google好 百度+google (也可不输入条件全部查询) <!--#include file="conn.asp"--> <% Function SearshSQL(Tname,Lname,Str) 'Tname-表名 Lname-列名 Str-查询的字符 If Trim(Str)="" then         MySql="Select * From &q

  • php通过数组实现多条件查询实现方法(字符串分割)

    复制代码 代码如下: <?php $keyword="asp php,jsp"; $keyword=str_replace(" "," ",$keyword); $keyword=str_replace(" ",",",$keyword); $keyarr=explode(',',$keyword); for($index=0;$index<count($keyarr);$index++) {

  • 用扩展方法优化多条件查询(不定条件查询)

    在我们开发过程中,特别是管理系统的开发,经常会遇到多条件查询(或者叫不定条件查询)的案例,就是提供给User输入的查询条件有多个不同的查询栏位,而且,在实际使用中并不能确定User会使用哪些条件来当做搜索条件. 下图就是我们实际项目中一个查询页面的截图,  User在实际操作中,有可能会只根据[扣帐编号]查询,那么,只要在[扣帐编号]栏位输入号码,其他栏位留空即可,那么查询语句就只卡[扣帐编号]这条条件也有可能直接根据日前范围查询,只要输入起始日期即可.当然,在实际开发的时候我们是不能预判Use

  • PHP组合查询多条件查询实例代码第1/2页

    先向大家说明需求:按照我们系统的要求,我们将通过部门名称.员工姓名.PC名称.IP地址等等字段来进行组合查询从而得到想要的数据结果.那么,为了简单起见,我们用两个条件(部门名称.员工姓名)的组合查询来向大家说明这一技术技巧.当我们只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当你同时限制部门与员工姓名时,才能查询出唯一信息. 那就让我们开始. 首先建立查询页面search.php,不同于上次单一条件查询,这次我们需要两个条件的组合进行查询. <html> <body

  • 多条件查询的程序

    而在对用户进行查询时,也可能会使用到多种条件的查询方式,如通过工号查询.通过姓名查询.通过性别查询.通过学历查询等.也有可能会通过多种条件的组合查询,如查学历是大专的女员工等. 对于这种查询情况,通常的作法是让用户输入查询条件,再进行SQL语句组合来进行查询.如让用户输入工号.姓名等,单击提交按钮之后,在后台获得这些信息,如以下代码所示: 复制代码 代码如下: //设置查询语句 string strSql = "SELECT * FROM [user] where UserState=1 &qu

  • java实现单词查询小程序

    本文实例为大家分享了Java单词查询小程序,供大家参考,具体内容如下 1.任务简介 本次分享的单词查询小程序是基于MySQL数据库制作的,使用的词汇表是我在博客<将Excel文件导入MySQL数据库的方法>中讲解的,首先我需要讲解Java连接MySQL数据库的方法,然后再给大家分享单词查询小程序. 2.Java连接MySQL数据库的方法 1)要使用Java程序对MySQL数据库进行操作,首先需要建立它们之间的连接,关于连接驱动可以通过百度下载,下载解压后可以得到一个jar包,将该包导入预先创建

  • JpaRepository 实现简单条件查询

    目录 JpaRepository 简单条件查询 创建持久化类 定义数据访问层接口 定义业务层类 定义控制器类 测试应用 JpaRepository 查询规范 1.JpaRepository支持接口规范方法名查询 2.JpaRepository相关查询功能 a.Spring DataJPA框架在进行方法名解析时 b.假如创建如下的查询 c.特殊的参数 d.也可以使用JPA的NamedQueries,方法如下 e.还可以使用@Query来指定本地查询 f.创建查询的顺序 JpaRepository

  • MyBatisPlus超详细分析条件查询

    目录 解决日志冗长的问题 构建条件查询 多条件构建 null判定 解决日志冗长的问题 不过测试的时候,控制台打印的日志比较多,速度有点慢而且不利于查看运行结果,所以接下来我们把这个日志处理下: 取消初始化spring日志打印,resources目录下添加logback.xml,名称固定,内容如下: <?xml version="1.0" encoding="UTF-8"?> <configuration> </configuration

  • ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解

    本文实例讲述了ThinkPHP5联合(关联)查询.多条件查询与聚合查询.分享给大家供大家参考,具体如下: 一.联合(关联)查询 1. 项目表 DROP TABLE IF EXISTS `darling_project`; CREATE TABLE `darling_project` ( `project_id` int(32) NOT NULL AUTO_INCREMENT, `project_name` varchar(20) NOT NULL, `create_time` int(32) N

  • mybatis collection 多条件查询的实现方法

    mybatis collection 多条件查询的实现方法 前言: 业务需要通过mybatis 查询返回嵌套集合,嫌多次查询太麻烦,用自带的高级查询解决问题,下边是代码,已测试通过. 说下自己的理解,就是一个主查询结果集里面嵌套了子查询的结果集,可以是多个子查询,每个子查询的条件从主查询结果集中获取,返回值各自定义.collection 标签的property是主查询里面集合的名字,如果有多个就再写个collection,column是子查询参数,单参数直接写主查询结合返回结果,例如直接写上us

  • 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

  • 使用准则进行条件查询--1.4.从窗体中选择查询的条件

    4.从窗体中选择查询的条件 前面的方法虽然简单,但对用户来说操作不够方便,对设计者来说也难以控制,如果通过窗体来实现,这些问题就可以解决了. 如下面的窗体,运行时用户可以在组合框中选择要查询司机的姓名,按下查询按钮就可以看到查询的结果. 下面详细地列出设计的步骤: 创建一个窗体,按下控件向导按钮,在窗体上添加一个组合框.在第一个对话框中选择"我想让组合框在一个表或查询中查找这些值",下一步. 选择一个为组合框提供数据的表或查询.下一步. 选择组合框中要显示的数据,通常除了选择要显示在组

  • Spring MVC结合Spring Data JPA实现按条件查询和分页

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 推荐视频:尚硅谷Spring Data JPA视频教程,一学就会,百度一下就有. 后台代码:在DAO层继承Spring Data JPA的PagingAndSortingRepository接口实现的 (实现方法主要在SbglServiceImpl.java类中) 前台表现:用kkpaper表现出来 实现效果: 1.实体类 package com.jinhetech.yogurt.sbgl.entity; im

随机推荐