c# – 将INT传递给存储过程失败

前端之家收集整理的这篇文章主要介绍了c# – 将INT传递给存储过程失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将CommandArgument作为int传递给我的存储过程,但我得到:

Failed to convert parameter value from a String to a Int32

即使它在我通过它之前被转换了……

C#代码

cmd.CommandText = "deleteProd";
int delprodID = Convert.ToInt32(e.CommandArgument.ToString());

Response.Write(delprodID);

cmd.Parameters.Add(new sqlParameter("@prodID",sqlDbType.Int)).Value = delprodID;
cmd.CommandType = CommandType.StoredProcedure;

sqlTools.cmdToNonQuery(cmd)

我的Response.Write显示我在delprodID中有正确的ID.

存储过程:

ALTER PROCEDURE dbo.deleteProd @prodID int
AS
IF @prodID > 0
BEGIN
    DELETE FROM products WHERE prodID = @prodID
END

解决方法

3个月前我遇到了同样的问题,无法解释发生了什么.不知何故,您必须显式声明参数,设置它,然后将其添加到Parameters属性.它只发生在sql Server上,而不是在Access上发生.我知道这基本上是相同的代码,但这对我有用,不要问我为什么:
sqlParameter param = new sqlParameter("@prodID",sqlDbType.Int);
param.Value = delprodID;
cmd.Parameters.Add(param);

猜你在找的C#相关文章