我从 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/