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传递给我的存储过程,但我得到:
即使它在我通过它之前被转换了…… 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |