我使用C#winForm数据库MS Accsses。 我想使用SQL查询或方法在数据库中总计超过2个dolumns for example
我试过这段代码。它有效,但它太慢了。
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;
}
如何使用智能和简单的代码计算列?
答案 0 :(得分:1)
这可以通过计算数据库中的所有内容来实现:
SELECT sum(R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 + R15) as total FROM Vol_rate
但是,看到你的数据库中有15个通用命名的单独列,我怀疑你的数据模型存在的问题比这个慢速查询要大得多......