2009-12-13 123 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