如何在VB 2010中显示数据库连接状态

问题描述 投票:0回答:2

我正在开发销售点系统。我想为用户显示数据库连接状态。我使用 MS Access 2013 数据库和 Visual Studio 2010 (VB)。我为该项目创建了如下模块,

Imports System.Data.OleDb
Module ModConVar
    Public sql As String
    Public cmd As OleDbCommand
    Public dr As OleDbDataReader

    Public conn As OleDbConnection
    Public connStr As String = System.Environment.CurrentDirectory.ToString & "\NCS_POS_DB.accdb"

    Public Sub ConnDB()
        Try
            conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & connStr & "")
            conn.Open()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

我在主 MDI 表单中有一个名为 lblDBStatus 的标签,我尝试使用以下代码,但它不起作用。

If conn.State = ConnectionState.Open Then
    lblDBStatus.Text = "CONECTED"
End If

请问有什么建议吗?

database vb.net visual-studio-2010
2个回答
0
投票

仅当连接状态打开时才会显示“

CONNECTED
”。否则你的标签将不会显示任何内容

尝试此操作并确保连接已打开:

If conn.State = ConnectionState.Open Then
    lblDBStatus.Text = "CONNECTED"
Else 
    lblDBStatus.Text = "DISCONNECTED"
End If

0
投票

OleDbConnection公开了StateChanged事件。

所以你可以像这样跟踪状态:

Public Sub ConnDB()

    Using connection As New OleDbConnection("...")
        AddHandler connection.StateChange, AddressOf Me.OnConnectionStateChange
        Try
            connection.Open()
            'Do stuff..
        Catch ex As Exception
            Throw ex
        Finally
            RemoveHandler connection.StateChange, AddressOf Me.OnConnectionStateChange
        End Try
    End Using

End Sub

Private Sub OnConnectionStateChange(sender As Object, e As StateChangeEventArgs)
    MessageBox.Show(e.CurrentState.ToString())
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.