当我运行代码时,结果将为'type'而不是名称之和。也尝试使用读取器内部的总和[(" type"(],并显示总和(类型(。它应该显示该特定名称的数量
C#内部的代码:
public void DisplayName()
{
try
{
string Connection = @"Data Source=local;Initial Catalog=Project;Integrated Security=True";
SqlConnection Connect = new SqlConnection(Connection);
string Name;
Console.WriteLine("nShowing Namen");
Console.WriteLine("Enter name type: n");
country = Console.ReadLine();
ConnectingDatabase.Open();
string Query = "SELECT SUM(Types) FROM PersonName WHERE Name = @Name";
SqlCommand Commands = new SqlCommand(Query, ConnectingDatabase, ConnectingDatabase.BeginTransaction());
Commands.Parameters.Add(new SqlParameter("@Name", country));
SqlDataReader Reader = ParaComm.ExecuteReader();
if (Reader.Read())
{
Console.WriteLine("Your name is " + name + " with sum of {0}n", Reader[("Types")]);
}
Reader.Close();
ParaComm.Transaction.Commit();
Connect.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
在SQL中使用聚合函数时,应使用Group By
。尝试此SQL-Command
string Query = "SELECT SUM(Types) FROM main.Stats Group by column_name WHERE
Name = @Name";
据您所知,您始终可以通过列号引用列。即0
在这种情况下。
但是,处理这一前进的最简单方法,并避免更改引起列号更改的查询的问题,就是为列提供一个别名。
如果您在查询中添加别名,请将其更改为 SELECT SUM(Types) as TypeSum FROM PersonName WHERE Name = @Name
您应该发现可以使用Reader["TypeSum"]
语法访问该值。