使用此代码时,出现错误
Procedure or function 'Registration' expects parameter '@qUsername', which was not supplied
有人可以告诉我如何解决这个问题吗?这是我的 Controller 代码和用于注册的 SQL 查询
public ActionResult Create([Bind(Include = "UserID,Username,FirstName,LastName,Email,Password,Number,IsAdmin,Salt")] UsersTable usersTable)
{
if (ModelState.IsValid)
{
Int32 rowsAffected;
SqlCommand cmd = new SqlCommand();
SqlConnection sqlConnection1 = new SqlConnection(@"xxx");
cmd.CommandText = "dbo.Registration";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
rowsAffected = cmd.ExecuteNonQuery();
sqlConnection1.Close();
return RedirectToAction("Index");
}
return View(usersTable);
}
程序代码:
CREATE PROCEDURE dbo.Registration
@qUsername NVARCHAR(50),
@qPassword NVARCHAR(50),
@qFirstName NVARCHAR(40),
@qLastName NVARCHAR(40),
@errorResponse NVARCHAR(250) OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @salt UNIQUEIDENTIFIER = NEWID()
BEGIN TRY
INSERT INTO dbo.UsersTable (UserID, Password, Salt, FirstName, LastName)
VALUES (@qUsername, HASHBYTES('SHA2_512', @qPassword + CAST(@salt AS NVARCHAR(36))), @salt, @qFirstName, @qLastName)
SET @errorResponse = 'Success'
END TRY
BEGIN CATCH
SET @errorResponse = ERROR_MESSAGE()
END CATCH
END
最佳答案
在从 C# 代码调用存储过程之前,您需要定义并设置存储过程的参数 - 如下所示:
cmd.CommandText = "dbo.Registration";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConnection1;
// define and set parameters!
cmd.Parameters.Add("@qUsername", SqlDbType.NVarChar, 50).Value = .....;
cmd.Parameters.Add("@qPassword", SqlDbType.NVarChar, 50).Value = .....;
cmd.Parameters.Add("@qFirstName", SqlDbType.NVarChar, 40).Value = .....;
cmd.Parameters.Add("@qLastName", SqlDbType.NVarChar, 40).Value = .....;
cmd.Parameters.Add("@errorResponse", SqlDbType.NVarChar, 250).Direction = ParameterDirection.Output;
sqlConnection1.Open();
rowsAffected = cmd.ExecuteNonQuery();
sqlConnection1.Close();
关于c# - 如何将 SQL Server 过程变量设置为从 C# ASP.NET MVC 程序输入的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59070499/