2014-01-16 37 views
1

對不起,這個主流的職位。在長時間研究這個問題後,我從未真正找到過解決方案。很多原因可能會引發這個問題。 所以我提出這個帖子要求一些理解。處理錯誤超時已過期。最大游泳池大小連接在2005年達到

我操縱數據庫..將它們填充到數組,列表,比較,然後再次將它們存回數據庫。在所有的過程我用很多像查詢和ExecuteScalarMysqlCommand,導致module.vb

創造了很多的new mysqlcommand我使用vb.net和XAMPP MySQL作爲數據服務器.. 和我有2個數據庫:他們「再相同,但大小不同..

問題是:當我測試的第二個數據庫(在記錄的信息量的大小更小) 我的程序工作良好,沒有延遲或超時時間error`

但是當我改變數據源與我的第一個數據庫日月光(4900個與記錄)時,timeout expired彈出直接導致我的VS 2005變得沒有響應

按我在谷歌的研究,我已經找到了一些解釋這個錯誤

  1. VS 2005仍然有一個錯誤,那就是timeout expired。解決方案是升級vs版本

  2. 由於嘗試在同一臺服務器上打開相同的連接而引發錯誤。

  3. 這個錯誤信息並不完全是什麼意思。它會告訴你該連接得滿滿的,但在現實中連接的插槽仍然可用

  4. 我使用太多mysqlcommand變量,我在module.vb多達50 mysqlcomand變量已經!!!

我的個人意見:我可以不適用第一個解決方案..我的計劃會產生很多錯誤的,如果我是在升級成VS 2010或更高

第二個解決方案:我真的不明白這是什麼意思。我認爲這是因爲我試圖再次打開相同的連接(例如CMD_open1。executereader),但同一個連接已經打開並且沒有關閉

在我的程序中,我已經確保每次我'使用CMD.execute讀者或的ExecuteNonQuery或執行標量M,I加CMD name.connection.dispose(),正確關閉打開的連接,現在另一個新的

所以我的問題是

  1. 做了我所有的個人猜測正確?如果沒有,請告訴我正確的
  2. 根據我的問題,我個人認爲原因是我使用太多mysqlcommand,即使我每次使用時都關閉了連接。那是對的嗎?對此有什麼正確的解釋?
  3. 什麼是適用於解決我的問題的適當解決方案?

thx閱讀。我真的很渴望解決這個問題的答案。

這裏是我的module.vb,它包含很多mysqlcommand變量

enter image description here

回答

0

看起來你需要一些嚴重重構的SS。

與數據庫相關的對象是價格昂貴。你實例化得越多,你付出的懲罰就越多。他們也是稀缺。最終你會耗盡(快而不遲)。您在使用它們時需要非常明智,並且一定要在完成後適當地清理它們。

許多程序員把所有的數據庫相關的對象爲(本質)的單一功能,處理所有的清理等:

Private Function RunQuery(ByVal procName As String) As DataTable 
    Using l_connection = new MySqlConnection("connection info") 
     Using l_command = New MySqlCommand(procName) 
      l_command.CommandType = StoredProcedure 

      ' ... etc ... 

      Return l_results 
     End Using 
    End Using 
End Function 

Using塊確保數據庫對象後正確清理每次呼叫(呼叫適當的CloseDispose函數)。

但是,聽起來好像你已經得到了一些關於潛在問題的建議。你提供的列表幾乎是我會推薦的。您需要測試和調試以確定哪些問題導致了問題。

另外,mainstream support for Visual Studio 2005 ended in 2011。如果你不能爲升級你的工具來修復已知的錯誤而煩心(因爲它對你來說太多了),那麼關於這個問題沒有什麼可說的,除了「當你遇到時不要抱怨錯誤「。

+0

哦,你是對的..我忘了問..哪一個更好?用功能關閉連接還是處理? 和'CMD.connection.dispose()'和'CMD.connection.close'有什麼區別。每次我使用連接時,我總是用「處理」而不是兩者來關閉它。什麼是最合適的方式? –

+0

@SoniGunz - 關閉就足夠了。處理通話關閉。最佳做法是在[使用聲明](http://msdn.microsoft.com/en-us/library/htd05whh.aspx)中使用資源密集型對象以確保正確處置。 – JDB