C# 如何对大型数据库中的2列或更多列求和-c
我使用数据库MS ACCSS和C winForm。 我想使用sql查询或方法在数据库中求和超过2个dolumns 我试过这个密码。它能工作,但太慢了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
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这个技巧被广泛使用,但效率极低。