我正在尝试将 select 语句结果存储在 C# 变量中,但出现此错误
"Specified cast is not valid"
当我运行它时。我不确定如何解决它,请帮助
SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
SqlCommand cmd1 = new SqlCommand("select cast(round(sum(CAST(AvgNumbers AS numeric(12,2))),2) as decimal(12,2)) AS [Average Days] from MainTable ", con1);
cmd1.Connection = con1;
con1.Open();
Int32 result = (Int32)cmd1.ExecuteScalar();
con1.Close();
最佳答案
cmd1.ExecuteScalar()
未返回装箱整数。将它分配给一个对象并在调试器中查看它以了解它到底是什么。
我猜它会返回 Decimal 或 double,你需要做:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
或者:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[编辑以回应下方评论中的问题]
要保留十进制值,只需执行以下操作:
Decimal result = (Decimal) cmd1.ExecuteScalar();
如果需要,您可以将小数转换为 double :
double result = (double)(Decimal) cmd1.ExectuteScalar();
关于c# - Specified cast is not valid 错误使用 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944254/