我尝试使用存储过程更改用户密码。
控制器:
public ActionResult ChangeMyPassword(MyModel model)
{
int UserId = Convert.ToInt32(Session["UserId"]);
context.sp_ChangePassword(UserId, model.NewPassword);
context.SaveChanges();
return view();
}
存储过程:
USE [CRM_DEMO]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_ChangePassword]
@Id int ,
@NewPassword Varchar(50)
AS
Update UserTable
set
UserPassword = @NewPassword
WHERE UserId= @Id
有效;但是,密码在数据库中不会更改。我错过了什么?
答案 0 :(得分:0)
我在关键UserId中看到一个空格
int UserId = Convert.ToInt32(Session["UserId "]);
^
您可以验证是否实际将userid值传递给存储过程。如果不会更新,并且不会更新没有行的错误。
答案 1 :(得分:0)
试试这个。
USE [CRM_DEMO]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_ChangePassword]
(
@Id int ,
@NewPassword Varchar(50)
)
AS
BEGIN
UPDATE UserTable
SET UserPassword = @NewPassword
WHERE UserId= @Id
END