Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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# 如何对大型数据库中的2列或更多列求和-c_C#_Sql_Database - Fatal编程技术网

C# 如何对大型数据库中的2列或更多列求和-c

C# 如何对大型数据库中的2列或更多列求和-c,c#,sql,database,C#,Sql,Database,我使用数据库MS ACCSS和C winForm。 我想使用sql查询或方法在数据库中求和超过2个dolumns 我试过这个密码。它能工作,但太慢了 OleDbCommand command = new OleDbCommand("Select *from Vol_rate "); command.Connection = conn; OleDbDataReader dr = null; conn.Open(); try

我使用数据库MS ACCSS和C winForm。 我想使用sql查询或方法在数据库中求和超过2个dolumns

我试过这个密码。它能工作,但太慢了

 OleDbCommand command = new OleDbCommand("Select *from Vol_rate  ");
        command.Connection = conn;
        OleDbDataReader dr = null;
        conn.Open();
        try
        {
            dr = command.ExecuteReader();
            while (dr.Read())
            {
                R1 += int.Parse((dr["R1"].ToString()));
                R2 += int.Parse((dr["R2"].ToString()));
                R3 += int.Parse((dr["R3"].ToString()));
                R4 += int.Parse((dr["R4"].ToString()));
                R5 += int.Parse((dr["R5"].ToString()));
                R6 += int.Parse((dr["R6"].ToString()));
                R7 += int.Parse((dr["R7"].ToString()));
                R8 += int.Parse((dr["R8"].ToString()));
                R9 += int.Parse((dr["R9"].ToString()));
                R10 += int.Parse((dr["R10"].ToString()));
                R11 += int.Parse((dr["R11"].ToString()));
                R12 += int.Parse((dr["R12"].ToString()));
                R13 += int.Parse((dr["R13"].ToString()));
                R14 += int.Parse((dr["R14"].ToString()));
                R15 += int.Parse((dr["R15"].ToString()));

            }
        }
        catch { MetroFramework.MetroMessageBox.Show(this, "خظأ"); }
        finally
        {
            conn.Close();
        }
        rate = R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 + R15;
        fullres = (season * vol) * 75;
        res = rate * 100.0 / fullres;
        circularProgressBar2.Text = String.Format("{0:0.0}", res);
        circularProgressBar2.Value = (int)res;

    }

如何使用智能而简单的代码计算列?

这应该通过计算数据库中的所有内容来实现:

SELECT sum(R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 + R15) as total FROM Vol_rate

然而,看到数据库中有15个通用命名的独立列,我怀疑您的数据模型比这一个缓慢的查询有更大的问题…

选择SUMR1+R2+R3+R4+R5+R6+R7+R8+R9+R10+R11+R12+R13+R4+R15作为所有表名的总和Hanks,,这是工作:我想知道你是否不能直接从OleDbDataReader中读取int,而不是解析字符串。@AntonínLejsek这些不是字符串,它们作为对象传递,但你需要知道确切的类型,因为它们可以是Int32、Int64、Double或DB使用的任何类型。但正如任何事情一样,ToString这个技巧被广泛使用,但效率极低。