c# - 将变量分配给数据表

标签 c# asp.net datatable dataset

我从 SQL 存储过程返回 2 个结果 -

Select SUM(abcd) from rstuv
Select SUM(lmnop) from zxy

然后在我的 C# 中,我将它们分配给 Data Tables,就像这样

DataTable firstreturnedresult = ds.Tables[0];
DataTable secondreturnedresult = ds.Tables[1];

问题是如何将十进制变量分配给 Data Set 中包含的 SUM()

最佳答案

显示的查询使用标量函数 SUM,因此结果是一个由单行单列组成的数据表。要获取该值并将其分配给一个十进制变量,您可以这样写:

decimal sum1 = Convert.ToDecimal(firstreturnedresult.Rows[0][0]);

仅当您的数据库表包含至少一行要对其求和时,此方法才能正常工作。如果数据库表为空,则返回表的第一列包含值 DbNull.Value,您需要注意这一点并避免会触发异常的转换

decimal sum1 = 0;
if(firstreturnedresult.Rows[0][0] != DBNull.Value)
   sum1 = Convert.ToDecimal(firstreturnedresult.Rows[0][0]);

还要考虑更改检索值的方式。您可以选择简单的 SqlCommand 和对 ExecuteScalar 的调用,而不是构建 SqlDataAdapter 所需的所有基础结构

像这样

 SqlCommand cmd = new SqlCommand("Select SUM(abcd) from rstuv", connection);
 object result = cmd.ExecuteScalar();
 decimal sum1 = result == null ? 0 : Convert.ToDecimal(result);

关于c# - 将变量分配给数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35160665/

相关文章:

c# - C# if/else 上的编译器优化

asp.net - 将消息从 SSIS (2012) 包推送到 ASP.NET Web 应用程序中的 SignalR 中心 - 最好的方法是什么?

c# - DataTable.DefaultView.RowFilter 中的日期时间过滤

javascript - Jquery数据表在搜索时计算页脚中的总和:

c# - 使用 HtmlAgilityPack 从 WP7 上的 HTML 获取文本

c# - 使用文件流创建新文件时访问被拒绝 - Xamarin IOS

c# - 您好,我正在尝试在 Azure 应用程序服务中运行 Web 作业,但它抛出与日期时间相关的错误

javascript - Adblock 防止按钮被点击

c# - DataTable.Columns.Clear 和列排序后的 DataAdapter.Fill NullReferenceException

C# Windows 服务 - 从 App.config 启动 .exe