读书人

很简单的一个存储过程,便是搞不定?

发布时间: 2011-12-21 23:56:01 作者: rapoo

很简单的一个存储过程,就是搞不定???
create proc Login
(
@Name nvarchar(50),
@Pwd nvarchar(50)
)
as
declare @equal nvarchar(4)
set @equal= '= '
declare @str nvarchar(1000)
set @str= 'select * from Users where LgName ' + @equal + @Name + 'and Pwd ' + @equal + @Name
exec sp_executesql @str
go

这个验证用户登录的存储过程调试成功,就是当调用的时候老是起不到作用,不知道错在什么地方了,请大侠指教??


[解决办法]
create proc Login
(
@Name nvarchar(50),
@Pwd nvarchar(50)
)
as
declare @equal nvarchar(4)
set @equal= '= '
declare @str nvarchar(1000)
set @str= 'select * from Users where LgName ' + @equal + ' ' ' ' + @Name + ' ' ' and Pwd ' + @equal + ' ' ' ' + @Pwd + ' ' ' '
exec sp_executesql @str
go

[解决办法]
它的 意思就是说

一般对于字符型的字段了在sql语句中对应的值应该用单引号括起来
比如
select × from a where name= 'qiyuefeng '

对应你的问题就是组合的时候加个单引号的问题
[解决办法]
create proc Login
(
@Name nvarchar(50),
@Pwd nvarchar(50)
)
as
select * from Users where LgName = @Name and Pwd = @Pwd
go
最好不要用上面的方法:因为如果输入的密码是: ' 'or 1 <> 0 --
那样的话你的数据就暴露出去了
[解决办法]
西,在前端就要控制,不能 ' 'or 1 <> 0 --的入存程中。

读书人网 >asp.net

热点推荐