Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mysql中SUM()的返回类型是什么?_C#_Mysql - Fatal编程技术网

C# mysql中SUM()的返回类型是什么?

C# mysql中SUM()的返回类型是什么?,c#,mysql,C#,Mysql,我正在用C#NET写一个程序 我想收集一个类的总频率(假设每个类都有很多单词,每个单词在相应的类中都有自己的频率) 所以我在mysql中使用了sum()函数。但有一个错误,说我的演员是错误的 public void average_each_type() { MySqlDataReader result; int total_freq = 0; string type = "";

我正在用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将返回一个十进制或双精度值,具体取决于“frequency”中的类型。从:

SUM()和AVG()函数为精确值参数(整数或十进制)返回一个十进制值,为近似值参数(FLOAT或DOUBLE)返回一个双精度值。(在MySQL 5.0.3之前,SUM()和AVG()为所有数值参数返回DOUBLE。)

如果您想要一个整数,则可以使用
Convert
获得一个整数,而不管源类型是什么:

total_freq = Convert.ToInt32(result["sum_of_freq"]);

这里的优点是,无论从数据库返回什么类型的值,只要它是数值类型,它都会工作。

除了Reed所说的,您还可以在SQL中执行整数强制转换:

CAST(SUM(frequency) as INT) as sum_of_freq

应与表达式的类型相同;也就是说,数据库中
频率
的数据类型。可能的@JoelEtherton重复:不完全是重复。但有些信息可能有用,这是不正确的。无法转换为INT,需要转换为UNSIGNED。看见