2012-06-24 38 views
0

我有一個SProc,它返回兩次之間的所有列的平均值,即04:00至04:14。我想有一個選項可以在相同的時間間隔內返回24小時的結果(在這種情況下,間隔時間爲15分鐘。04:14 - 04:00)。所以結果如下所示:For循環與sqlcommand結合使用

00:00 - 00 :14 = x.xxx

00:15 - 0時29 = x.xxx

....

IM假設我不能改變內的所述的SqlCommand(特別爲SPROC的參數) using語句,並且需要在之前放置for循環,從而每次創建一個新的SqlCommand對象?

for(int i = x; .....) 
    { 
     using (SqlCommand cmd = new SqlCommand()) 
     { 
     } 
    } 

感謝

回答

2

這是因爲你不打開一個新的連接每次要做到這一點,只要一個不錯的方式。雖然我不確定性能影響。

+0

非常感謝。 –

0

如果你真的想要去一個for循環,那麼你應該這樣做如下:

using(SqlCommand cmd = new SqlCommand()) 
{ 
    //Setup the command object and connection. 
    for(int i=0; i<....) 
    { 
    cmd.CommandText = "set your dynamic sql here based on current iteration"; 
    var reader = cmd.ExecuteReader(); 
    //Now read you rows 
    } 
} 

我會在一個存儲過程SQL內做到這一點,並返回所有行您的時間範圍內的數據。

+0

SqlCommand.Dispose不關閉連接。 –

+0

感謝您的糾正。出於某種原因,我總是認爲SqlCommand的disposer關閉了連接。 – loopedcode

+0

'SqlConnection.Dispose'方法關閉連接,所以你部分是正確的。 –