2015-10-28 24 views
4

即時通訊工作在C#與MySQL的登錄服務器和我有一個問題: 我在互聯網上看到,正確的方式來使用MySqlConnection和做查詢是使用「使用」這樣的說法:'使用'在MySQL連接

using (SqlConnection con = new SqlConnection(CNN_STRING)) 
{ 
    using (SqlCommand cmd = new SqlCommand("COMMAND", con)) 
    { 
     //do something 
    } 
} 

那麼,如果我使用這個連接將被關閉,每次打開,對吧?問題是打開連接需要大約200ms,每次我嘗試執行查詢時都需要這個時間嗎?

+1

您通常只需打開一次,然後執行所有查詢。無需多次打開它。 – Bxx

+3

「using」是處理實現[IDisposable]的對象的正確方法(https://msdn.microsoft.com/en-us/library/3bwa4xa9%28v=vs.110%29.aspx?f=255&MSPPError=- 2147217396)。 –

+0

請參閱[MySql中的連接池](http://dev.mysql.com/doc/connector-net/en/connector-net-programming-connection-pooling.html) – Steve

回答

0

不!只要確保你使用的邏輯在該塊內。它將被連接並正確處置。

+0

這不是一個答案也''使用'照顧自動配置 – MethodMan

0

這應該打開您的連接,並在using塊的末尾正確處理它。

using (SqlConnection con = new SqlConnection(CNN_STRING)) 
{ 
    SqlCommand cmd = new SqlCommand("COMMAND, con); 
    //do something 
} 
4

好吧,如果我用這個連接將被關閉和打開每一次,對嗎?

這將是自動關閉。在使用它之前,您仍然需要打開

問題是,打開連接大約需要200ms,每次嘗試執行查詢時都需要這個時間嗎?

您必須嘗試並測量它以確定知道,但連接彙集在.NET中,因此創建一個不是一個昂貴的過程。是否開放每次都需要花費相同的時間量,因爲它取決於網絡的質量。

試用推薦的方式,如果它成爲一個衡量問題爲您的應用程序總體然後看看其他的解決方案。

不要走到頻譜的另一端,在那裏你的應用程序的生命週期保持連接。如果你這樣做,那麼你必須經常檢查以確保連接仍然打開(因爲它可以通過其他方式關閉),並可能導致其他問題。

+0

upvote。最後一段 - 同上。我厭倦了我們的代碼 - 所有的「打開」和「關閉」,尤其是在使用'using'時。 – radarbob

+1

更不用說了...... [孤兒連線](https://coding.abel.nu/2011/12/idisposable-and-using-in-c/)。 –