2009-09-17 63 views
0

我使用Visual Studio 2008和C#來訪問MySql數據庫。到目前爲止,我依靠Visual Studio來爲DataSet創建代碼,這似乎給我一個問題。如果數據庫不可訪問(即未運行),則會顯示「MySqlException未處理」,「無法連接到任何指定的MySQL主機」。如何處理DataSet.Designer.cs中的異常?

我的問題是什麼是處理這種異常的最佳方法?

我希望能夠在不篡改designer.cs文件的情況下處理它,但如果這不可能,那麼解決此問題的任何方法都可以。

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] 
    [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] 
    public virtual int Fill(customerDataSet.addressesDataTable dataTable) { 
     this.Adapter.SelectCommand = this.CommandCollection[0]; 
     if ((this.ClearBeforeFill == true)) { 
      dataTable.Clear(); 
     } 
// Exception occurs on the line below. 
     int returnValue = this.Adapter.Fill(dataTable); 
     return returnValue; 
    } 
+0

你什麼時候得到這個異常?在視覺工作室設計師?在你的代碼?如果您在代碼中遇到異常情況,可否請您發佈相關部分? – 2009-09-17 08:52:29

+0

異常不會發生在文件中。什麼是方法? – 2009-09-17 10:07:42

回答

0

當處理異常,你應該抓住你有你想要的響應異常做一些最早的那一刻例外。 A DataSet是處理數據庫無法訪問的事件的不好的地方;如何通知您的應用程序的其他部分發生此錯誤?

就你而言,你希望如何處理這個被拋出的MySqlException?在大多數情況下,無法訪問的數據庫將是一個難以恢復的錯誤。您可能希望讓異常通過當前進程冒泡並僅顯示錯誤消息,或者您可能需要重新嘗試該過程,或者您可能希望切換到另一個數據庫。

聽起來你可能想要圍繞異常的目的以及爲什麼存在「throw」機制做一些大致的閱讀。他們不僅僅是在那裏煩擾你寫入try-catch塊!

+0

我認爲你已經有了一個很好的觀點,我會考慮在使用DataSet之前測試connectionString。稍後會返回結果。 – Severus 2009-09-17 10:02:52

+0

我創建了一個單獨的方法,嘗試打開一個連接,如果失敗,它會被捕獲,並通過消息框告訴我連接失敗而不會崩潰。它做我所需要的,謝謝你的幫助。 – Severus 2009-09-17 11:49:40