有时当我的服务器出现故障或忙碌时,我在连接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
答案 0 :(得分: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时执行有意义的操作的代码。
答案 1 :(得分:0)
如果您没有正确处理连接,可能会发生这种情况。例如,假设由于您的sql代码中存在问题而引发异常,并且它被捕获,但是以一种永远不会调用connection.Close()
的方式捕获。最终,您的可用连接将用完,connection.Open()
调用将失败并在尝试连接时超时。为避免这种情况,您应该使用“using”块创建连接,如下所示:
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