加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 05:36:41 所属栏目:百科 来源:网络整理
导读:我正在尝试将CommandArgument作为int传递给我的存储过程,但我得到: Failed to convert parameter value from a String to a Int32 即使它在我通过它之前被转换了…… C#代码: cmd.CommandText = "deleteProd";int delprodID = Convert.ToInt32(e.CommandAr
我正在尝试将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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读