[英]Stored procedure showing an error“ Procedure or function 'Dlete_Selected' expects parameter '@id', which was not supplied”
I have called a stored procedure with parameters but it showing an error 我用参数调用了存储过程,但显示错误
Procedure or function 'Dlete_Selected' expects parameter '@id', which was not supplied 过程或函数“ Dlete_Selected”期望参数“ @id”(未提供)
Here is my stored procedure: 这是我的存储过程:
CREATE procedure [dbo].[Delete_Selected]
(@id bigint)
AS
DELETE FROM Properties
WHERE Id = @id
Here is my code: 这是我的代码:
protected void btnDeleteSelected_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
cmd.CommandText = "Delete_Selected";
cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
cmd.Parameters.Clear();
DataTable dtb = dboMrk.GetDataTableFrmDB(cmd);
if (dtb.Rows.Count > 0)
{
dtlstdata.DataSource = dtb;
dtlstdata.DataBind();
}
}
Remove: 去掉:
cmd.Parameters.Clear();
You delete all parameters you just added. 您删除刚刚添加的所有参数。
parameters are cleared just after inserted. 插入后立即清除参数。
cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
cmd.Parameters.Clear();
you need to remove cmd.Parameters.Clear();
您需要删除cmd.Parameters.Clear();
to make it work. 使它工作。
Modify Your code, 修改您的代码,
You have passed Request.QueryString["id"]
which returns String value. 您已经传递了Request.QueryString["id"]
,该返回字符串值。 and in sp you have specified big int type. 在sp中,您已指定big int类型。
So convert it, like, Convert.ToInt64(Request.QueryString["id"])
因此,将其转换,例如Convert.ToInt64(Request.QueryString["id"])
and also add one line, 再加上一行
cmd.CommandType = CommandType.StoredProcedure;
after this line 在这行之后
cmd.CommandText = "Dlete_Selected";
Hopefully, this will work for you. 希望这对您有用。 After doing this if you stuck anywhere then plz comment. 完成此操作后,如果您卡在任何地方,请发表评论。 Thank you :) 谢谢 :)
Try this: 尝试这个:
protected void btnDeleteSelected_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
cmd.CommandText = "Dlete_Selected";
cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
//cmd.Parameters.Clear();
DataTable dtb = dboMrk.GetDataTableFrmDB(cmd);
if (dtb.Rows.Count > 0)
{
dtlstdata.DataSource = dtb;
dtlstdata.DataBind();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.