简体   繁体   English

如何将 SQL Server 过程变量设置为从 C# ASP.NET MVC 程序输入的数据?

[英]How to set SQL Server procedure variables to inputted data from C# ASP.NET MVC program?

When using this code, I get an error使用此代码时,出现错误

Procedure or function 'Registration' expects parameter '@qUsername', which was not supplied过程或函数“Registration”需要参数“@qUsername”,但未提供

Can someone please tell me how to fix this?有人可以告诉我如何解决这个问题吗? This is my controller code and the SQL query for registration这是我的控制器代码和用于注册的 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);
}

Procedure code:程序代码:

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

You need to define and set the parameters for the stored procedure before your call it from your C# code - like this:在从 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();

Use the following:使用以下内容:

cmd.Parameters.AddWithValue("@qUsername", "xxxxx");

For all parameters before calling:对于调用前的所有参数:

cmd.ExecuteNonQuery();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用C#从ASP.NET中的SQL Server设置数据范围 - How to set ranges on data from SQL Server in ASP.NET with c# 如何从ASP.net MVC程序中获取普通c#程序中的JSON数据? - How do I get JSON data in a plain c# program from a ASP.net MVC program? 从SQL Server或asp.net/C#(mvc 3)页面将数据导入excel - importing data to excel from SQL Server or asp.net/C# (mvc 3) page 从C#(ASP.NET MVC 4)将多个单词短语传递到SQL Server存储过程文本搜索 - Passing multiple word phrase from C# (ASP.NET MVC 4) to SQL Server Stored Procedure text search 如何从ASP.NET MVC C#中的SQL Server数据库流式传输mp3文件 - How to stream mp3 file from a SQL Server database in ASP.NET MVC C# 如何使用 Asp.net MVC 和 C# 从 SQL Server 搜索基于纬度和经度的记录 - How to search Latitude and Longitude based record from SQL Server use Asp.net MVC and C# 将数据表从C#Asp.Net网站传递到SQL Server存储过程 - Passing a datatable from C# Asp.Net website to SQL Server stored procedure C#ASP.NET MVC 5和SQL Server - C# ASP.NET MVC 5 and SQL Server 如何在C#ASP.Net中将表格数据从Excel上传到SQL Server 2008 - How to upload table data from Excel to SQL Server 2008 in C# ASP.Net 将变量中的值传递给SQL Server数据库的C#,ASP.NET中的插入查询 - Passing values from variables to Insert query in C#, ASP.NET for SQL Server database
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM