2010-07-29 276 views
0

我在短時間內對數據庫進行了多次查詢。 在過去,我一直關閉連接,並重新打開時,我需要再次與sqlserver交談 - 這對我很好。但是現在,當我在很短的時間內嘗試這樣做時,我沒有獲得任何連接可用的消息。然後我想我會試着在應用程序的整個生命週期中保持連接,迄今爲止我還沒遇到任何問題。我只是想知道別人怎麼看待這種進步...我是在一條短暫的災難之路上?sql連接池

我還有一件事,我真的沒有必要調用連接open()方法,這個連接似乎沒有調用就可以工作 - 這是怎麼回事?

void main() 
{ 
SqlConnection cn = new SqlConnection(); 
cn.ConnectionString = <connection>; 
tmr.interval=100; 
tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed); 
} 

void tmr_elapsed() 
{ 
tmr.Enabled = false; 
SqlDataAdapter da = new SqlDataAdapter(query, cn); 
da.Fill(dt); 
tmr.Enabled = true; 
} 

C#,SQL服務器2000,.NET 2.0

回答

1

你真的不應該保持這個連接打開,然後重用它。當然,你的計時器是非常快的(每100毫秒),但同時,你保持連接打開相當長的時間。

相反,當您在定時器的事件處理程序中完成時,應該打開連接並正確處置它。如果你爲連接使用using語句,你應該沒問題,不要擔心資源耗盡。

至於不必打開連接,SqlDataAdapter會爲您打開連接,根據需要打開和關閉連接。它會在連接完成後將連接保持在它所處的狀態(如果連接處於打開狀態,則會保持打開狀態,如果關閉,則會將其關閉)。