如何用参数控制执行不同的sql语句(在线等答案

如何用参数控制执行不同的sql语句(在线等答案,第1张

用存储过程:

--创建存储过程SearchAA,需要传递三个参数:@iID--整形的ID(大于与等于0为有效值,小于0将不参与条件构造);@sName--字符串类型的Name(为空将不参与条件构造);@iAge--整形的Age(大于0为有效值,小于等于0将不参与条件构造)

create procedure SearchAA

@iID int,

@sName varchar(20),

@iAge int

as

declare @sSQL varchar(1000)

set @sSQL = ''

if @iID >=0

set @sSQL = ' id = ' + cast(@iID as varchar(10))--将参数@iID转换为字符串

if @sName <>''

if @sSQL = ""

set @sSQL = ' name = ''' + @sName + ''''

else

set @sSQL = @sSQL + ' and name = ''' + @sName + ''''

if @iAge >0

if @sSQL = ""

set @sSQL = ' age = ' + cast(@iAge as varchar(10))--将参数@iAge转换为字符串

else

set @sSQL = @sSQL + ' and age = ' + cast(@iAge as varchar(10))

--构造查询语句

if @sSQL <>''

set @sSQL = 'select * from aa where ' + @sSQL

else

set @sSQL = 'select * from aa '

--执行查询

exec(sSQL)

go

--调用存储过程:exec Search 1,'',0 执行该语句将从aa中查询出id = 1 的记录,其他两个条件不参与查询条件;exec Search -1,'张三',20 查询出Name为张三,Age为20的记录

你需要了解sql语句的拼接和一般字符串的拼接的异同.

例如:在sql脚本语句中,字符串用单引号'',这些在C#语句中拼接"sql语句"字符串时需要注意.

你可以在vs.net中写一个用字符串拼接的sql语句,最后把它赋值给一个字符串对象.然后用断点调试区查看生成的sql语句的结果,一般sql语句较长,验证的方式都是把这段sql语句copy到sql sever的脚本文件(.sql)中去执行一下,就知道是否正确了.当然也有先在sql server 中调试好拼接字符串后再copy到程序代码中去修改的.具体方式不定.

(以上是介绍的拼接sql语句方法,不过这种方式的安全性不高,常见的sql注入式攻击就是利用的拼接sql语句的缺陷.)

你还可以考虑使用带参数的存储过程来实现,这个就需要了解存储过程的一些知识了,具体的方法我就不介绍了,关于带参数的存储过程,网上有很多例子参考.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11860761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存