获取错误,因为过程或函数需要未提供的参数
本文关键字:参数 函数 取错误 因为 过程 获取 | 更新日期: 2023-09-27 17:50:30
我已经创建了一个存储过程来将我的数据插入到表中,但我得到错误
过程或函数'AddUserDetails'期望参数'@UserId',该参数未提供。
这是我的SP
CREATE PROCEDURE AddUserDetails
@UserId nvarchar(55),
@UserPassword nvarchar(100),
@ConfirmPass nvarchar(100),
@Mobile int,
@Email nvarchar(100),
@BirthDate nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
Insert into RegisterUser(UserId,UserPassword,ConfirmPass, Mobile, Email,BirthDate)Values (@UserId, @UserPassword, @ConfirmPass, @Mobile, @Email,@BirthDate)
END
GO
这是我的c#代码。
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@UserId", SqlDbType.NVarChar).Value = txtUserId.Text;
cmd.Parameters.Add("@UserPassword", SqlDbType.NVarChar).Value = txtPassword.Text;
cmd.Parameters.Add("@ConfirmPassword", SqlDbType.NVarChar).Value = txtConfirmPassword.Text;
cmd.Parameters.Add("@Mobile", SqlDbType.Int).Value = txtMobile.Text;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
cmd.Parameters.Add("@BirthDate", SqlDbType.NVarChar).Value = txtBirth.Text;
cmd = new SqlCommand("AddUserDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.ExecuteNonQuery();
Response.Redirect("http://www.google.com");
con.Close();
}
catch (Exception ex)
{
throw ex;
}
}
请指出这里的错误
因为您正在使用
重新创建命令cmd = new SqlCommand("AddUserDetails", con);
行,并且永远不要向该cmd添加任何参数。您尝试添加旧的SqlCommand cmd = new SqlCommand();
行。
删除SqlCommand cmd = new SqlCommand();
行并移动;
SqlCommand cmd = new SqlCommand("AddUserDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
放在代码的顶部。就是这样。你的接球部分什么都没做。刚刚抛出新的异常与throw ex;
,但这重置堆栈跟踪。并且考虑使用using
语句来自动处理连接和命令,而不是手动调用Close()
或Dispose()
方法。
try
{
SqlCommand cmd = new SqlCommand("AddUserDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserId", SqlDbType.NVarChar).Value = txtUserId.Text;
cmd.Parameters.Add("@UserPassword", SqlDbType.NVarChar).Value = txtPassword.Text;
cmd.Parameters.Add("@ConfirmPassword", SqlDbType.NVarChar).Value = txtConfirmPassword.Text;
cmd.Parameters.Add("@Mobile", SqlDbType.Int).Value = Convert.ToInt32(txtMobile.Text);
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
cmd.Parameters.Add("@BirthDate", SqlDbType.NVarChar).Value = txtBirth.Text;
con.Open();
cmd.ExecuteNonQuery();
Response.Redirect("http://www.google.com");
con.Close();
}
catch (Exception ex)
{
//
}