【发布时间】:2018-08-25 11:27:11
【问题描述】:
我有用 vb.net 编写的表单应用程序。它使用 MySqlClient:
Imports MySql.Data.MySqlClient
Public Class frmTest
Dim AConn As MySqlConnection
Dim errMsg as String = ""
Sub New()
Try
'Opens connection as forms open and keep it open
If checkConn() = False Then Throw New Exception(ErrMsg)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Function checkConn() As Boolean
Try
'if connection is not initiated then initiate
If IsNothing(AConn) Then AConn = New MySqlConnection(ConnSTR)
'if connectionstate is any other than "open", reconnect
If AConn.State <> ConnectionState.Open Then
closeConn()
AConn.Open()
End If
Return True
Catch ex As Exception
ErrMsg = ex.Message
Return False
End Try
End Function
Sub closeConn()
Try
AConn.Close()
Catch ex As Exception
End Try
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles
Button2.Click
Try
If checkConn() = False then Throw New Exception(errMsg)
Dim cmdCheck As New MySqlCommand("show databases;", AConn)
cmdCheck.ExecuteNonQuery()
Catch ex as Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
现在,当我打开表单时,它工作正常。连接打开,单击我得到结果。然后,我让表单空闲 10 分钟,然后再次单击 button2。 它通过“checkConn”没有错误,它说connectionstate是“open”,但是,当涉及到“cmdCheck.ExecuteNonQuery()”行时,异常抛出:“致命错误......”。问题是连接状态(在 checkConn() 中)报告 Connection.Open,虽然它不是(我在服务器上检查过 - 由于处于不活动状态而关闭)。 有没有更好的方法来检查连接状态?
【问题讨论】:
标签: mysql vb.net mysqlconnection