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

标签 c# sql-server stored-procedures int

我试图通过 CommandArgumentint到我的存储过程,但我得到:

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# - 将 INT 传递给存储过程失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299502/

相关文章:

c# - 我怎样才能知道照片是在 Vista 上运行的 C# 中实际拍摄的?

asp.net - SQL Server数据-> MySql + Django迁移

sql-server - SQL Server 区分大小写的数据库名称

sql-server-2008 - 使用字段的 MAX 选择记录返回表的 MAX 忽略条件

c# - null 真正有什么值(value)?

c# - 在 Visual Studio 中,有没有办法按用途对私有(private)方法进行排序?

c# - SqlCommand 参数与 String.Format

sql - 有没有办法在 SQL Server 2000 数据库上列出打开的事务?

python - 错误 : 1318 Incorrect number of arguments for PROCEDURE | Flask

php - 按邮政编码距离升序计算和排序用户的最快方式(也是最优化的)