将变量分配给数据 Table

Assign Variable To Data Table

我从 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()

您可能正在对您的 SQL 命令使用 ExecuteQuery。在您的命令中使用 ExecuteScalar 方法。这会给你一个单一的价值。

decimal sum = (decimal) cmd.ExecuteScalar();

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

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

仅当您的数据库 table 包含至少一行要对其求和时,此方法才能正常工作。如果数据库 table 为空,则返回 table 的第一列包含值 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);