多条件查询的程序
程序员文章站
2022-11-21 11:37:16
而在对用户进行查询时,也可能会使用到多种条件的查询方式,如通过工号查询、通过姓名查询、通过性别查询、通过学历查询等。也有可能会通过多种条件的组合查询,如查学历是大专的女员工...
而在对用户进行查询时,也可能会使用到多种条件的查询方式,如通过工号查询、通过姓名查询、通过性别查询、通过学历查询等。也有可能会通过多种条件的组合查询,如查学历是大专的女员工等。
对于这种查询情况,通常的作法是让用户输入查询条件,再进行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
对于这种查询情况,通常的作法是让用户输入查询条件,再进行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
上一篇: PHP 获取视频时长的实例代码
推荐阅读
-
一个简单的域名注册情况查询程序_PHP教程
-
select-mysql 嵌套查询,一个表的多个字段 作为另一个表的条件,求高手
-
多个查询条件的sql语句的拼写技巧,求指点。
-
mysql数据库不能识别中文的查询条件。_MySQL
-
09.数据的条件查询操作
-
Mybatis动态sql、if与where的使用、sql片段、foreach遍历、Mybatis的关联查询一对一、一对多、多对多、Mybatis的延时加载
-
使用准则进行条件查询--1.4.从窗体中选择查询的条件
-
用php写的serv-u的web申请账号的程序,很烂,供参考,修改和删除请自己做了!这是个初稿,请多_PHP教程
-
mysql进阶(五)数据表中带OR的多条件查询
-
提高MySQL数据库查询效率的几个技巧[php程序员必看]