【发布时间】:2013-12-01 17:06:11
【问题描述】:
我在我的 c# 服务中调用一个用 sql server 编写的存储过程。但我一次又一次面临异常:
用户代码未处理 InvalidCastException:指定的强制转换无效
代码:
public function(Data dt)
{
con = new SqlConnection(constring);
string brand = dt.brand;
cmd = new SqlCommand("execute pro100 @brand, @check", con);
SqlParameter param = new SqlParameter("@check", SqlDbType.Int);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add("@brand", brand);
cmd.Parameters.Add(param);
con.Open();
cmd.ExecuteNonQuery();
int result = (int)cmd.Parameters["@check"].Value; // Exception is here
con.Close();
return result;
}
我的存储过程如下 这是存储过程
ALTER PROCEDURE [dbo].[pro100]
@brand varchar(20),
@check int output
as
update carlog set minex=1000 where brand=@brand;
select @check=id from carlog where brand=@brand;
return @check
有人可以提出可能的解决方案吗?
【问题讨论】:
-
忽略可悲的语法意义。
-
当强制转换无效时,请查看您尝试强制转换的值的类型以确保它是预期的。这基本上适用于所有无效的演员表。
-
@NikunjVats 下次请发布您的代码而不是图片,因为随着时间的推移,图片通常会变得不可用
-
会照顾好@lazyberezovsky
-
@NikunjVats 你能说明参数
check在你的存储过程中是如何定义的吗?
标签: c# sql-server stored-procedures output-parameter