更新ASP.NET MVC中的存储过程

时间:2013-09-26 12:03:33

标签: sql asp.net-mvc stored-procedures

我尝试使用存储过程更改用户密码。

控制器:

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

有效;但是,密码在数据库中不会更改。我错过了什么?

2 个答案:

答案 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