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

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

相关文章:

sql-server - 存储过程返回一行、记录集或输出参数?

c# - 在多个应用程序(旨在同时访问一个数据库)之间共享一个 Entity Framework 4 数据模型的最佳方式是什么?

java - 如何使用 jTDS 将表值参数传递给存储过程?

c# - 关于 DI 和 IoC 容器的一个问题

sql - 使用 int 列计算 MS SQL Server 中的百分比

sql-server - 尝试删除 SQL Server 数据库时出现错误 21

sql - 在 string_agg 中排序似乎不起作用

sql - 将数据库从 MS SQL 迁移到 MySql - 耗时/困难程度如何?

c# - mvc 5 中不会触发基本方法

c# - Blazor WASM Net 6 Preview 4 Azure AD - 尝试登录时出错 : 'Cannot read property ' toLowerCase' of undefined'