2017-07-16 10 views
0

私はデータベースを使用しています。MSはC#winFormを使用します。 SQLクエリまたはメソッドを使用して2列以上のデータベースを合計したい for example大きなデータベースで2つ以上の列を合計する方法 - C#

私はこのコードを試しました。それは動作しますが、それは遅すぎます。

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

「SUM(R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R4 + R15)」は、「 – Gusman

+0

ありがとう、それは仕事です:D –

+0

文字列を解析する代わりに、直接OleDbDataReaderからintとして読み取ることができないのだろうかと思います。 –

答えて

1

これは、データベース内のすべてのものを計算することにより、トリックを行う必要があります。

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

しかし、あなたは、データベースに15の総称別々の列を持って見て、私はあなただけよりも、あなたのデータモデルとはるかに大きな問題を抱えている疑いがありますこの遅いクエリ...

関連する問題