将变量分配给数据 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);
我从 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);