很简单的一个存储过程,就是搞不定???
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 --這樣的數據傳入存儲過程中。