我正在用C#.NET编写一个程序
我想收集一个班级的总频率(让我们想象每个班级都有很多单词,每个单词在相应的班级中都有自己的频率)
我想收集一个班级的总频率(让我们想象每个班级都有很多单词,每个单词在相应的班级中都有自己的频率)
所以我在mysql中使用了sum()函数.但是有一个错误说我的演员是错的.
public void average_each_type() { MysqLDataReader result; int total_freq = 0; string type = ""; command.CommandText = "select class_name,SUM(frequency) as sum_of_freq from training_set group by class_name "; result = command.ExecuteReader(); while (result.Read()) { total_freq = (int)result["sum_of_freq"]; //error happened here type = result["class_name"].ToString(); //.....then so on...//
解决方法
MysqL中的SUM将返回十进制或双精度值,具体取决于“频率”中的类型.从
documentation for SUM:
The SUM() and AVG() functions return a DECIMAL value for exact-value arguments (integer or DECIMAL),and a DOUBLE value for approximate-value arguments (FLOAT or DOUBLE). (Before MysqL 5.0.3,SUM() and AVG() return DOUBLE for all numeric arguments.)
如果你想要一个整数,无论源类型是什么,你都可以使用Convert得到一个:
total_freq = Convert.ToInt32(result["sum_of_freq"]);
这里的优点是无论从数据库返回什么类型的值,Convert.ToInt32都可以工作,只要它是数字类型.