为什么将这项工作铸造的ExecuteScalar()结果C#
int collectionCharge = (int)cmdCheck.ExecuteScalar();
但是这会产生一个异常
double collectionCharge = (double)cmdCheck.ExecuteScalar();
System.InvalidCastException:指定的转换无效。
为什么它不是有效的?
编辑 我想简单地从查询返回一个单一的结果,即得到一些运费的价格。所以我不能把它变成int
,因为它必须有小数,因此试图投到double
。我仍然在学习asp.net所以如果有更好的方式来实现这一目标,请点我在正确的方向:)
EDIT 2 完整的代码和SQL ...
using (SqlCommand cmdCheck = new SqlCommand("SELECT FREIGHT_PRICE FROM FREIGHT_QUOTER_BELNL_NEW WHERE CUSTOMER_NO = @CUSTOMER_NO AND COUNTRY = @COUNTRY AND ROUND(WEIGHT_FROM,0) < @WEIGHT AND ROUND(WEIGHT_TO,0) >= @WEIGHT AND SHIPVIA = '48';", connection))
{
double collectionCharge = (double)cmdCheck.ExecuteScalar();
FreightAmount = collectionCharge;
}
因为它返回一个int,不返回一个double? – 2013-03-15 15:06:47
我不知道,但双重演员可能会让你过去:'(double)(int)cmdCheck.ExecuteScalar()'。 – neontapir 2013-03-15 15:07:05
'-1'ExecuteScalar不会返回'double' [MSDN Execute Scalar](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executescalar.aspx) – MethodMan 2013-03-15 15:09:39