亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

多條件查詢的程序

 更新時(shí)間:2009年05月27日 01:45:38   作者:  
在一個(gè)網(wǎng)站中,常常會使用到查詢功能。假設(shè)一個(gè)企業(yè)內(nèi)部網(wǎng)中,用戶信息里通常會涉及到工號、姓名、性別、學(xué)歷、職業(yè)、職稱、身份證號碼、手機(jī)號碼、座機(jī)號碼、傳真號碼、郵政編號、通訊地址等信息。
而在對用戶進(jìn)行查詢時(shí),也可能會使用到多種條件的查詢方式,如通過工號查詢、通過姓名查詢、通過性別查詢、通過學(xué)歷查詢等。也有可能會通過多種條件的組合查詢,如查學(xué)歷是大專的女員工等。
對于這種查詢情況,通常的作法是讓用戶輸入查詢條件,再進(jìn)行SQL語句組合來進(jìn)行查詢。如讓用戶輸入工號、姓名等,單擊提交按鈕之后,在后臺獲得這些信息,如以下代碼所示:
復(fù)制代碼 代碼如下:

//設(shè)置查詢語句
string strSql = "SELECT * FROM [user] where UserState=1 ";
//如果用戶名不為空則添加查詢條件
if (UserName!="")
{
    strSql += "and (UserName'= "+UserName+"') ";
}
//如果性別不為空則添加查詢條件
if (Sex!="")
{
    strSql += "and (Sex'= "+Sex+"') ";
}

在創(chuàng)建完SQL語句之后,執(zhí)行該語句獲得查詢結(jié)果。
這種是使用得最多并且是最不安全的方法,因?yàn)檫@是最容易讓別人SQL注入攻擊的一個(gè)方式。
如果想要避免SQL注入攻擊,可以將查詢語句寫在存儲過程中,然后使用SqlParameter將參數(shù)傳遞給存儲過程,但是,一個(gè)多條件查詢的存儲過程需要怎么寫呢?
其實(shí),這個(gè)存儲過程并不難,可以使用以下方式:
復(fù)制代碼 代碼如下:

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

相關(guān)文章

最新評論