2009-12-13 130 views
0

有時,當我的服務器關閉或忙碌時,連接到MySQL時出現「連接超時」錯誤。但隨着錯誤的程序也崩潰。我的問題是如何防止崩潰,在發生這種情況時顯示msgbox會更好。 (Visual Basic中2010)處理連接超時錯誤

我用這個,

Dim connStr As String = "Database=mydatabase;" & _ 
        "Data Source=datasrc;" & _ 
        "User Id=myid;Password=mypass" 

Dim connection As New MySqlConnection(connStr) 

connection.Open() // I get error here 

回答

1

如果你不希望看到的ThreadExceptionDialog,你需要捕獲異常的代碼。例如:

Public Function ConnectToDbase() As Boolean 
    Try 
     connection.Open() 
     '--- etc 
     Return True 
    Catch ex As TimeoutException 
     MessageBox.Show(ex.Message, "Could not connect to the database") 
     Return False 
    End Try 
    End Function 

現在,使用ConnectToDbase()在返回False時執行一些有意義的代碼會帶來負擔。

+0

謝謝它的作品,但這次我得到近20個msgbox。 – 2009-12-13 15:22:20

+0

這就是我談到的「做有意義的事情」的負擔。當你得到假回報時,不要繼續嘗試使用數據庫。也許你應該告訴用戶致電支持並終止你的程序。 – 2009-12-13 15:49:03

0

的一種方式會發生這種情況是如果不妥善處理您的連接。例如,假設由於sql代碼中存在問題而引發異常,並且它已被捕獲,但遇到這種情況,您永遠不會撥打connection.Close()。最終,您將耗盡可用的連接,並且在嘗試連接時,您的connection.Open()調用將失敗並超時。爲了避免這種情況,你應該以一個「使用」塊創建您的連接,就像這樣:

Using connection As New MySqlConnection(connStr), _ 
     command As New MySqlCommand("sql statement here") 

    connection.Open() 


End Using ''# connection is guaranteed to be closed here, even if an exception is thrown 
+0

它不工作,當我第二次調用連接函數,我仍然得到錯誤 – 2009-12-13 12:12:10