c# - Specified cast is not valid 错误使用 C#

标签 c# asp.net sql-server-2008

我正在尝试将 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/

相关文章:

c# - 编码变量参数 - __arglist 或替代

asp.net - Web Api Asp.Net 身份

c# - 在 C# 中调用 SQL 定义的函数

具有多列的 SQL Pivot

sql-server - 将 SQL Server 2008 转换为 2000

c# - 我怎么知道 "assembly"是否真的改变了?

c# - 可观察到的 : Getting latest value in intervals until source finishes

c# - OneTimeSetUp 的空引用类型

c# - 如何从 ASP.NET 获取网页的 HTML 内容

.net - 在 ASP.NET 中接收 POST 数据